-var X_Node_Attr = {\r
- noValue : {\r
+var X_Node_Attr_noValue = {\r
checked : 1,\r
compact : 1,\r
declare : 1,\r
nowrap : 1,\r
readonly : 1,\r
selected : 1\r
- },\r
- renameForDOM : {\r
+},\r
+X_Node_Attr_renameForDOM = {\r
'class' : 'className',\r
accesskey : 'accessKey',\r
'accept-charset' : 'acceptCharset',\r
usemap : 'useMap',\r
valuetype : 'valueType',\r
checked : 'defaultChecked'\r
- },\r
- \r
- HAS_VALUE : {\r
+},\r
+\r
+X_Node_Attr_HAS_VALUE = {\r
INPUT : true,\r
TEXTAREA : true,\r
SELECT : true,\r
- BUTTON : true\r
- },\r
- \r
- renameForTag : {},\r
+ BUTTON : true,\r
+ OBJECT : true,\r
+ PARAM : true // FlashVars が flash 側から書き換えられるケースがある\r
+},\r
+\r
+X_Node_Attr_renameForTag = {};\r
// http://nanto.asablo.jp/blog/2005/10/29/123294\r
// checked -> defaultChecked\r
// 動的に生成した input 要素を文書ツリーに挿入する前に設定した checked 属性は反映されず、defaultChecked だと反映される\r
// 先頭にスペース\r
- objToAttrText : function( obj ){\r
- var noValue = X_Node_Attr.noValue,\r
+function X_Node_Attr_objToAttrText( obj ){\r
+ var noValue = X_Node_Attr_noValue,\r
attrs = [ '' ], n = 0, p, v;\r
if( !obj ) return ''; // Opera7\r
for( p in obj ){\r
attrs[ ++n ] = noValue[ p ] ? p : [ p, '="', v, '"' ].join( '' );\r
};\r
return 0 < n ? attrs.join( ' ' ) : '';\r
- }\r
};\r
\r
(function( renameForDOM, renameForTag ){\r
for( name in renameForDOM ){\r
renameForTag[ renameForDOM[ name ] ] = name;\r
};\r
-})( X_Node_Attr.renameForDOM, X_Node_Attr.renameForTag );\r
+})( X_Node_Attr_renameForDOM, X_Node_Attr_renameForTag );\r
\r
\r
\r
/* --------------------------------------\r
* attribute\r
- * X_Node_Attr.toIndex に定義されている 属性の場合\r
+ * X_Node_Attr_toIndex に定義されている 属性の場合\r
* \r
* http://nanto.asablo.jp/blog/2005/10/29/123294\r
* className, onclick等 はここで設定しない\r
* \r
*/\r
-X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){\r
+Node.prototype.attr = function( nameOrObj /* v */ ){\r
var attrs = this._attrs, newAttrs, f, p, elm, v;\r
\r
if( this._xnodeType !== 1 ) return this;\r
newAttrs = this._newAttrs || ( this._newAttrs = {} );\r
\r
for( p in nameOrObj ){\r
- if( this._setAttr( attrs, newAttrs, p, nameOrObj[ p ] ) === true ) f = true;\r
+ if( X_Node_Attr_setAttr( this, attrs, newAttrs, p, nameOrObj[ p ] ) === true ) f = true;\r
};\r
if( f ){\r
this._attrText = false;\r
this._dirty |= X_Node_Dirty.ATTR;\r
- this._root && this._reserveUpdate(); \r
+ this._root && X_Node_reserveUpdate(); \r
};\r
return this;\r
} else\r
if( 1 < arguments.length ){\r
// setter\r
- if( this._setAttr( attrs || ( this._attrs = {} ), this._newAttrs || ( this._newAttrs = {} ), nameOrObj, arguments[ 1 ] ) === true ){\r
+ if( X_Node_Attr_setAttr( this, attrs || ( this._attrs = {} ), this._newAttrs || ( this._newAttrs = {} ), nameOrObj, arguments[ 1 ] ) === true ){\r
this._attrText = false;\r
this._dirty |= X_Node_Dirty.ATTR;\r
- this._root && this._reserveUpdate();\r
+ this._root && X_Node_reserveUpdate();\r
};\r
return this;\r
} else\r
case 'style' :\r
case 'cssText' :\r
return this.cssText();\r
+ case 'text' :\r
+ return this.text();\r
+ case 'html' :\r
+ return this.html();\r
+ case 'selected' :\r
+ // kquery.js : safariのバグ対策\r
+ // if ($.browser.safari && key === "selected" && tmp) tmp.selectedIndex;\r
+ // 親ノードの selectedIndex の getter を呼んでおくと値が正しくなる、ということ?( by itozyun )\r
+ if( X_UA.WebKit ) this._rawObject.parentNode.selectedIndex;\r
case 'value' :\r
case 'checked' :\r
- case 'selected' :\r
case 'disabled' : \r
case 'selectedIndex' :\r
- if( X_Node_Attr.HAS_VALUE[ this._tag ] ){\r
+ if( X_Node_Attr_HAS_VALUE[ this._tag ] ){\r
if( this._newAttrs && X_Object_inObject( nameOrObj, this._newAttrs ) ) return this._newAttrs[ nameOrObj ];\r
- if( elm = X_UA_DOM.IE4 ? this._rawObject || this._ie4getRawNode() : this._rawObject ){\r
+ if( elm = X_UA_DOM.IE4 ? this._rawObject || X_Node__ie4getRawNode( this ) : this._rawObject ){\r
if( !attrs ) attrs = this._attrs = {};\r
return attrs[ nameOrObj ] = elm[ nameOrObj ]; // getAttribute( nameOrObj )?\r
};\r
};\r
break;\r
};\r
- return attrs && attrs[ X_Node_Attr.renameForTag[ nameOrObj ] || nameOrObj ];\r
+ return attrs && attrs[ X_Node_Attr_renameForTag[ nameOrObj ] || nameOrObj ];\r
};\r
};\r
-X.Dom.Node.prototype._setAttr = function( attrs, newAttrs, name, v ){\r
+function X_Node_Attr_setAttr( that, attrs, newAttrs, name, v ){\r
switch( name ){\r
// case 'type' : TODO IE は input, button, object に対して type の再設定が出来ない _state が要素生成済なら不可\r
case 'UID' :\r
case 'tagName' :\r
return;\r
case 'id' :\r
- v = ( v !== 'ie4uid' + this._uid ) ? v : undefined;\r
- if( v !== this._id ){\r
- this._id = v;\r
- this._dirty |= X_Node_Dirty.ID;\r
- this._root && this._reserveUpdate();\r
+ v = ( v !== 'ie4uid' + that._uid ) ? v : undefined;\r
+ if( v !== that._id ){\r
+ that._id = v;\r
+ that._dirty |= X_Node_Dirty.ID;\r
+ that._root && X_Node_reserveUpdate();\r
};\r
return; \r
case 'class' :\r
case 'className' :\r
- return this.className( v );\r
+ return that.className( v );\r
case 'style' :\r
case 'cssText' :\r
- return this.cssText( v );\r
+ return that.cssText( v );\r
+ case 'text' :\r
+ return that.text( v );\r
+ case 'html' :\r
+ return that.html( v );\r
};\r
// debug\r
if( name.indexOf( 'on' ) === 0 ){\r
return;\r
};\r
\r
- name = X_Node_Attr.renameForTag[ name ] || name;\r
+ name = X_Node_Attr_renameForTag[ name ] || name;\r
if( attrs[ name ] === v ) return;\r
\r
if( v == null ){\r