ELM_EXIST : 2 << 1,\r
ELM_IN_TREE : 2 << 2,\r
\r
- IS_TEXTNODE : 2 << 3,\r
- \r
STYLE_IS_DISPLAY_NONE : 2 << 4, // display:none \r
STYLE_IS_HIDDEN : 2 << 5, // visibility:hidden opacity:0\r
STYLE_IS_POS_ABSOLUTE : 2 << 6, // position:absolute\r
\r
IE4_ONLY_TEXT : 2 << 14,\r
IE5_DISPLAY_NONE_FIX : X_UA.IE5 && X_UA.ActiveX ? 2 << 15 : 0, // filterがかかっていると不可ってことかも? MacIE5.2- は ?\r
- UNKNOWN_TAG_FIX : 2 << 16,\r
+ UNKNOWN_TAG_FIX : 2 << 16, // 使っていない\r
IE4_TEXTNODE_FIX : 2 << 17,\r
\r
DIRTY_CHILD : 2 << 18, // 使っていない\r
if( X_Node_newByTag ){\r
X_Node_newByTag = false;\r
this._tag = v.toUpperCase();\r
- this._xnodeType = 1;\r
this._flags |= X_Node_State.EXIST;\r
arguments[ 1 ] && this.attr( arguments[ 1 ] );\r
css = arguments[ 2 ];\r
if( X_Node_newByText ){\r
X_Node_newByText = false;\r
this._text = v;\r
- this._xnodeType = 3;\r
- this._flags |= X_Node_State.EXIST | X_Node_State.IS_TEXTNODE;\r
+ this._flags |= X_Node_State.EXIST;\r
} else {\r
if( 1 < arguments.length ) return new X_NodeList( arguments );\r
if( X.Type.isArray( v ) && v.length ) return new X_NodeList( v );\r
this._flags |= X_Node_State.IN_TREE | X_Node_State.ELM_IN_TREE;\r
};\r
this._rawObject = v;\r
- this._xnodeType = 1;\r
this._flags |= X_Node_State.EXIST | X_Node_State.ELM_EXIST;\r
this._tag = v.tagName.toUpperCase();\r
this._id = v.id;\r
this.parent = X_Node_getXNode( v.parentNode );\r
if( this.parent && this.parent._root ) this._root = this.parent._root;\r
this._rawObject = v;\r
- this._xnodeType = 3;\r
- this._flags |= X_Node_State.EXIST | X_Node_State.IS_TEXTNODE;\r
+ this._flags |= X_Node_State.EXIST;\r
this._text = v.data;\r
v.UID = uid;\r
break;\r
*/\r
function X_Node_create( tag, opt_attrs, opt_css ){\r
var xnode;\r
- if( this._xnodeType !== 1 ) return;\r
+ if( !this._tag ) return;\r
if( !this._xnodes ) this._xnodes = [];\r
\r
xnode = X_Doc_create( tag, opt_attrs, opt_css );\r
*/\r
function X_Node_createText( text ){\r
var xnode;\r
- if( this._xnodeType !== 1 ) return;\r
+ if( !this._tag ) return;\r
if( !this._xnodes ) this._xnodes = [];\r
\r
X_Node_newByText = true;\r
*/\r
function X_Node_clone( opt_clone_children ){\r
var xnode, xnodes, i, l;\r
- switch( this._xnodeType ){\r
- case 1 :\r
- X_Node_newByTag = true;\r
- xnode = new Node( this._tag, X_Object_clone( this._attrs ), X_Object_clone( this._css ) )\r
- .attr( { 'id' : this._id } )\r
- .className( this._className );\r
- if( opt_clone_children && ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
- for( i = 0; i < l; ++i ){\r
- xnode.append( xnodes[ i ].clone( true ) );\r
- };\r
+ if( this._tag ){\r
+ X_Node_newByTag = true;\r
+ xnode = new Node( this._tag, X_Object_clone( this._attrs ), X_Object_clone( this._css ) )\r
+ .attr( { 'id' : this._id } )\r
+ .className( this._className );\r
+ if( opt_clone_children && ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
+ for( i = 0; i < l; ++i ){\r
+ xnode.append( xnodes[ i ].clone( true ) );\r
};\r
- return xnode;\r
- case 3 :\r
- X_Node_newByText = true;\r
- xnode = new Node( this._text );\r
- return xnode;\r
- \r
- //case 0 :\r
- //case 2 :\r
+ };\r
+ return xnode; \r
};\r
- return this;\r
+ X_Node_newByText = true;\r
+ return new Node( this._text );\r
};\r
\r
/* --------------------------------------\r
*/\r
function X_Node_append( v ){\r
var i, l, xnodes, frg;\r
- if( this._xnodeType !== 1 ) return;\r
+ if( !this._tag ) return;\r
\r
if( 1 < ( l = arguments.length ) ){\r
for( i = 0; i < l; ++i ){\r
case X_Node_TYPE.STRING :\r
return this.append.apply( this, X_HtmlParser_parse( v, true ) );\r
case X_Node_TYPE.XNODE :\r
- if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
// 親の xnodes から v を消す\r
if( v.parent ){\r
v.remove();\r
function X_Node_appendAt( start, v ){\r
var xnodes, l, i;\r
\r
- if( this._xnodeType !== 1 ) return this;\r
+ if( !this._tag ) return this;\r
\r
l = arguments.length;\r
if( !( xnodes = this._xnodes ) ) xnodes = this._xnodes = [];\r
};\r
return this;\r
case X_Node_TYPE.XNODE :\r
- if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
// 親の xnodes から v を消す\r
if( v.parent ){\r
v.remove();\r
*/\r
function X_Node_contains( v ){\r
var elm, type, xnodes, i;\r
- if( !v || this._xnodeType !== 1 || this === v ) return false;\r
+ if( !v || !this._tag || this === v ) return false;\r
// contains ie4+\r
if( ( elm = this._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this ) ) && document.contains && ( type = X_Node_getType( v ) ) && ( type === X_Node_TYPE.RAW_HTML || type === X_Node_TYPE.RAW_TEXT ) ){\r
return elm.contains( v ); \r
* getChild\r
*/\r
function X_Node_getChildAt( i ){\r
- var xnodes = this._xnodeType === 1 && this._xnodes;\r
+ var xnodes = this._xnodes;\r
return xnodes && 0 <= i && i < xnodes.length && xnodes[ i ];\r
};\r
\r
var _ = '', q = '"', xnodes, n, i, l;\r
// setter\r
if( html !== undefined ){ // String 以外に Number や false null なども許可\r
- if( this._xnodeType === 3 ) return this.text( html );\r
+ if( !this._tag ) return this.text( html );\r
return html ? this.empty().append.apply( this, X_HtmlParser_parse( html, true ) ) : this.empty();\r
};\r
\r
// getter\r
- if( this._xnodeType === 3 ){\r
+ if( !this._tag ){\r
return this._text;\r
};\r
\r
if( text === null ) text = '';\r
text += '';\r
\r
- if( this._xnodeType === 3 ){\r
+ if( !this._tag ){\r
if( this._text !== text ){\r
text ? ( this._text = text ) : delete this.text;\r
this._root && X_Node_reserveUpdate();\r
return this;\r
};\r
if( !text ) return this.empty();\r
- if( ( xnodes = this._xnodes ) && xnodes.length === 1 && xnodes[ 0 ]._xnodeType === 3 ){\r
+ if( ( xnodes = this._xnodes ) && xnodes.length === 1 && !xnodes[ 0 ]._tag ){\r
xnodes[ 0 ].text( text );\r
return this;\r
};\r
return this;\r
};\r
// getter\r
- if( this._xnodeType === 1 ){\r
+ if( this._tag ){\r
if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
for( texts = [], i = 0; i < l; ++i ){\r
texts[ i ] = xnodes[ i ].text();\r
\r
X_Node_updateTimerID && X_Node_startUpdate();\r
\r
+ switch( name ){\r
+ case 'nodeType' :\r
+ return this._tag ? 1 : 3;\r
+ case 'text' :\r
+ return this.text();\r
+ case 'html' :\r
+ case 'innerHTML' :\r
+ return this.html();\r
+ case 'outerHTML' :\r
+ X_Node_outerXNode = this;\r
+ v = this.html();\r
+ X_Node_outerXNode = null;\r
+ return v;\r
+ };\r
+ \r
raw = this._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
if( !raw ) return;\r
\r
xnodes = that._xnodes;\r
l = xnodes ? xnodes.length : 0;\r
\r
- if( that._flags & X_Node_State.IE4_TEXTNODE_FIX || ( that._flags & X_Node_State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){ // 1 < l && elm.children.length === 0\r
+ if( that._flags & X_Node_State.IE4_TEXTNODE_FIX || ( that._flags & X_Node_State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._tag ) ) ){ // 1 < l && elm.children.length === 0\r
html = [];\r
for( i = 0; i < l; ++i ){\r
html[ i ] = X_Node__actualCreate( xnodes[ i ] );\r
var elm = that._rawObject,\r
xnodes, frg, i, l;\r
\r
- if( that._xnodeType === 3 ){\r
+ if( !that._tag ){\r
if( elm ) return elm;\r
//delete that._flags;\r
that._flags &= X_Node_DIRTY_MASK_RESET;\r
var uid = that._uid,\r
html, xnodes, n, i, l;\r
\r
- if( that._xnodeType === 3 ){\r
+ if( !that._tag ){\r
html = [ '<FONT id=ie4uid', uid, ' UID="', uid, '">', that._text, '</FONT>' ];// fake textNode\r
delete that._rawObject;\r
} else {\r
\r
n = html.length;\r
if( ( xnodes = that._xnodes ) && ( l = xnodes.length ) ){\r
- if( l === 1 && xnodes[ 0 ]._xnodeType === 3 ){\r
+ if( l === 1 && !xnodes[ 0 ]._tag ){\r
// only textnode\r
html[ n ] = xnodes[ 0 ]._text;\r
++n;\r
\r
that._root = that.parent._root;\r
\r
- if( that._xnodeType === 3 ){\r
+ if( !that._tag ){\r
// that._flags && X_Node__updateRawNode( that, elm );\r
that._flags & X_Node_DIRTY_MASK && X_Node__updateRawNode( that, elm );\r
return that;\r
var xnodes, i;\r
that._root = that.parent._root;\r
\r
- if( that._xnodeType !== 1 ) return that;\r
+ if( !that._tag ) return that;\r
\r
if( ( xnodes = that._xnodes ) && ( i = xnodes.length ) ){\r
for( ; i; ){\r
if( xnodes && ( l = xnodes.length ) ){\r
for( i = 0; i < l; ++i ){\r
child = xnodes[ i ];\r
- child._xnodeType === 1 && X_Node__actualRemove( child, true );\r
+ child._tag && X_Node__actualRemove( child, true );\r
};\r
};\r
\r
case 2 :\r
for( ; i < l; ++i ){\r
for( xnode = parents[ i ].firstChild(); xnode; xnode = xnode.nextNode() ){\r
- if( xnode._xnodeType === 1 && ( isAll || tagName === xnode._tag ) ) xnodes[ ++n ] = xnode;\r
+ if( xnode._tag && ( isAll || tagName === xnode._tag ) ) xnodes[ ++n ] = xnode;\r
}; \r
};\r
break;\r
case 3 :\r
for( ; i < l; ++i ){\r
for( xnode = parents[ i ].nextNode(); xnode; xnode = xnode.nextNode() ){\r
- if( xnode._xnodeType === 1 ){\r
+ if( xnode._tag ){\r
if( isAll || tagName === xnode._tag ) xnodes[ ++n ] = xnode;\r
break;\r
}; \r
merge = {};\r
for( ; i < l; ++i ){\r
for( xnode = parents[ i ].nextNode(); xnode; xnode = xnode.nextNode() ){\r
- if( xnode._xnodeType === 1 && ( isAll || tagName === xnode._tag ) ){\r
+ if( xnode._tag && ( isAll || tagName === xnode._tag ) ){\r
uid = xnode._uid;\r
if( merge[ uid ] ){\r
break;\r
j, child, _xnodes;\r
for( ; i < l; ++i ){\r
child = xnodes[ i ];\r
- if( child._xnodeType !== 1 ) continue;\r
+ if( !child._tag ) continue;\r
//console.log( child._tag );\r
if( ( j = list.indexOf( child ) ) !== -1 ){\r
newList[ newList.length ] = child;\r
child;\r
for( ; i < l; ++i ){\r
child = xnodes[ i ];\r
- if( child._xnodeType === 1 ){\r
+ if( child._tag ){\r
( !tag || child._tag === tag ) && ( list[ list.length ] = child );\r
//console.log( parent._tag + ' > ' + child._tag + ' == ' + tag+ ' l:' + list.length );\r
child._xnodes && child._xnodes.length && X_Node_Selector__fetchElements( list, child, tag );\r
tmp = null;\r
if( /* tmp === null && */ type <= 0 ){\r
for( node = xnode.prevNode(); node; node = node.prevNode() ){\r
- if( node._xnodeType === 1 && ( flag_all || tagName === node._tag ) ){\r
+ if( node._tag && ( flag_all || tagName === node._tag ) ){\r
tmp = false;\r
break;\r
};\r
};\r
if( tmp === null && 0 <= type ){\r
for( node = xnode.nextNode(); node; node = node.nextNode() ){\r
- if( node._xnodeType === 1 && ( flag_all || tagName === node._tag ) ){\r
+ if( node._tag && ( flag_all || tagName === node._tag ) ){\r
tmp = false;\r
break;\r
}; \r
tmp = checked[ uid ];\r
if( tmp === void 0 ){\r
for( c = 0, node = xnode.parent[ pointer ](), tagName = flag_all || xnode._tag; node; node = node[ sibling ]() ){\r
- if( node._xnodeType === 1 && ( flag_all || tagName === node._tag ) ){\r
+ if( node._tag && ( flag_all || tagName === node._tag ) ){\r
++c;\r
checked[ node._uid ] = a === 0 ? c === b : (c - b) % a === 0 && (c - b) / a >= 0;\r
}; \r
for( ; xnode = xnodes[i]; ++i ){\r
tmp = true;\r
for( node = xnode.firstChild(); node; node = node.nextSibling() ){\r
- if( node._xnodeType === 1 || ( node._xnodeType === 3 && node._text ) ){\r
+ if( node._tag || ( !node._tag && node._text ) ){\r
tmp = false;\r
break;\r
}; \r