- result = [ not ? 0 : combinator, selector, name, a, b ];\r
+ result = [ not ? 0 : combinator, SELECTOR[ name ] || selector, name, a, b ];\r
combinator, selector, name, tagName,\r
uid, tmp, xnode, filter, key, op, val, toLower, useName,\r
links, className, attr, flag;\r
combinator, selector, name, tagName,\r
uid, tmp, xnode, filter, key, op, val, toLower, useName,\r
links, className, attr, flag;\r
- for( xnode = parents[ i ][ 'firstChild' ](); xnode; xnode = xnode[ 'next' ]() ){\r
- if( xnode[ '_tag' ] && ( isAll || tagName === xnode[ '_tag' ] ) ) xnodes[ ++n ] = xnode;\r
- }; \r
+ parent = parents[ i ];\r
+ if( ( children = parent[ '_xnodes' ] ) && ( m = children.length ) ){\r
+ for( j = 0; j < m; ++j ){\r
+ xnode = children[ j ];\r
+ if( xnode[ '_tag' ] && ( isAll || tagName === xnode[ '_tag' ] ) ) xnodes[ ++n ] = xnode;\r
+ };\r
+ }; \r
+ \r
+ xnode = parents[ i ];\r
+ j = xnode[ 'getOrder' ]() + 1;\r
+ parent = xnode.parent;\r
+ if( parent && ( children = parent[ '_xnodes' ] ) && ( m = children.length ) ){\r
+ for( ; j < m; ++j ){\r
+ xnode = children[ j ];\r
+ if( xnode[ '_tag' ] ){\r
+ if( isAll || tagName === xnode[ '_tag' ] ){\r
+ xnodes[ ++n ] = xnode;\r
+ };\r
+ break;\r
+ };\r
+ };\r
+ };\r
+ /*\r
for( xnode = parents[ i ][ 'next' ](); xnode; xnode = xnode[ 'next' ]() ){\r
if( xnode[ '_tag' ] ){\r
if( isAll || tagName === xnode[ '_tag' ] ) xnodes[ ++n ] = xnode;\r
break;\r
}; \r
for( xnode = parents[ i ][ 'next' ](); xnode; xnode = xnode[ 'next' ]() ){\r
if( xnode[ '_tag' ] ){\r
if( isAll || tagName === xnode[ '_tag' ] ) xnodes[ ++n ] = xnode;\r
break;\r
}; \r
+ if( isStart ){\r
+ if( tagName === 'HTML' ){\r
+ xnodes[ 0 ] = X_Node_html;\r
+ break;\r
+ };\r
+ if( tagName === 'HEAD' ){\r
+ xnodes[ 0 ] = X_Node_head;\r
+ break;\r
+ };\r
+ if( tagName === 'BODY' ){\r
+ xnodes[ 0 ] = X_Node_body;\r
+ break;\r
+ };\r
+ \r
+ };\r
- xnode[ '_xnodes' ] && xnode[ '_xnodes' ].length && X_Node_Selector__fetchElements( xnodes, xnode, isAll ? null : tagName );\r
+ xnode[ '_xnodes' ] && xnode[ '_xnodes' ].length && X_Node_Selector__fetchElements( xnodes, xnode, isAll ? '' : tagName, merge );\r
+ name = parsed[ 2 ];\r
+ switch( parsed[ 1 ] ) {\r
+ case 1 :\r
+ filter = [ 'tag', 1, isXML ? name : name.toUpperCase() ]; break;\r
+ // #, ID\r
+ case 2 :\r
+ filter = [ 'id', 1, name ]; break;\r
+ // ., class\r
+ case 3 :\r
+ filter = [ 'class', 3, name ]; break;\r
+ // :, 擬似クラス\r
+ case 4 :\r
+ if( !( filter = X_Node_Selector__filter[ name ] ) ){\r
+ return [];\r
+ };\r
+ break;\r
+ // [] 属性\r
+ case 5 :\r
+ filter = [ name, parsed[ 3 ], parsed[ 4 ] ]; break;\r
+ };\r
+ break;\r
case 9 :\r
if( links = document.links ){\r
for( xnodes = [], i = links.length; i; ){\r
case 9 :\r
if( links = document.links ){\r
for( xnodes = [], i = links.length; i; ){\r
key === 'id' ? xnode[ '_id' ] :\r
key === 'class' ? xnode[ '_className' ] :\r
xnode[ '_attrs' ] && xnode[ '_attrs' ][ key ];\r
key === 'id' ? xnode[ '_id' ] :\r
key === 'class' ? xnode[ '_className' ] :\r
xnode[ '_attrs' ] && xnode[ '_attrs' ][ key ];\r
//useName ?\r
// elem[ X_Node_Attr_renameForDOM[ key ] || key ] :\r
// elem.getAttribute( key, 2 );\r
//useName ?\r
// elem[ X_Node_Attr_renameForDOM[ key ] || key ] :\r
// elem.getAttribute( key, 2 );\r
if( ( _xnodes = child[ '_xnodes' ] ) && X_Node_Selector__sortElementOrder( newList, list, _xnodes ) ){\r
if( ( _xnodes = child[ '_xnodes' ] ) && X_Node_Selector__sortElementOrder( newList, list, _xnodes ) ){\r
- function X_Node_Selector__fetchElements( list, parent, tag ){\r
+ function X_Node_Selector__fetchElements( list, parent, tag, merge ){\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
+ child[ '_xnodes' ] && X_Node_Selector__fetchElements( list, child, tag, merge );\r
};\r
for( i = 0, n = -1; xnode = xnodes[ i ]; ++i ){\r
if( checked[ xnode[ '_uid' ] ] ^ flag_not ) res[ ++n ] = xnode;\r
};\r
for( i = 0, n = -1; xnode = xnodes[ i ]; ++i ){\r
if( checked[ xnode[ '_uid' ] ] ^ flag_not ) res[ ++n ] = xnode;\r