n = -1; \r
isMulti = isMulti || 1 < l;\r
\r
- console.log( 'combinator ' + combinator );\r
+ //console.log( 'combinator ' + combinator );\r
\r
switch( combinator ){\r
// > TagName|*\r
break;\r
default :\r
if( combinator === 1 || ( isStart && selector < 7 ) ){\r
- console.log( l + ' > ' + xmlList.length + ' tag:' + tagName );\r
+ //console.log( l + ' > ' + xmlList.length + ' tag:' + tagName );\r
for( ; i < l; ++i ){\r
xml = parents[ i ];\r
xml.childNodes && xml.childNodes.length && XMLWrapper_fetchElements( xmlList, xml, isAll ? null : tagName );\r
};\r
- console.log( l + ' >> ' + xmlList.length + ' tag:' + tagName );\r
+ //console.log( l + ' >> ' + xmlList.length + ' tag:' + tagName );\r
};\r
};\r
\r
// :, 擬似クラス\r
case 4 :\r
if( !( filter = XMLWrapper_filter[ name ] ) ){\r
- return XMLListWrapper_0;;\r
+ return XMLListWrapper_0;\r
};\r
break;\r
// [] 属性\r
filter = [ 'class', 3, name ]; break;\r
// :, 擬似クラス\r
case 4 :\r
- if( !( filter = X_Node_Selector__filter[ name ] ) ){\r
+ if( !( filter = XMLWrapper_filter[ name ] ) ){\r
return [];\r
};\r
break;\r
function XMLWrapper_funcSelectorChild( type, flag_all, flags, xmlList ){\r
var res = [],\r
flag_not = flags.not,\r
- i = 0, n = -1, xnode, node,\r
+ i = 0, n = -1, xml, node,\r
tagName, tmp;\r
- for( ; xnode = xmlList[ i ]; ++i ){\r
- tagName = flag_all || xnode.tagName;\r
+ for( ; xml = xmlList[ i ]; ++i ){\r
+ tagName = flag_all || xml.tagName;\r
tmp = null;\r
if( /* tmp === null && */ type <= 0 ){\r
- for( node = xnode.previousSibling; node; node = node.previousSibling ){\r
+ for( node = xml.previousSibling; node; node = node.previousSibling ){\r
if( node.nodeType === 1 && ( flag_all || tagName === node.tagName ) ){\r
tmp = false;\r
break;\r
};\r
};\r
if( tmp === null && 0 <= type ){\r
- for( node = xnode.nextSibling; node; node = node.nextSibling ){\r
+ for( node = xml.nextSibling; node; node = node.nextSibling ){\r
if( node.nodeType === 1 && ( flag_all || tagName === node.tagName ) ){\r
tmp = false;\r
break;\r
}; \r
};\r
if( tmp === null ) tmp = true;\r
- if( tmp ^ flag_not ) res[ ++n ] = xnode;\r
+ if( tmp ^ flag_not ) res[ ++n ] = xml;\r
};\r
return res;\r
};\r
function XMLWrapper_funcSelectorNth( pointer, sibling, flag_all, flags, xmlList, a, b ){\r
- var res = [],\r
+ var uids = X_Array_copy( xmlList ),\r
+ res = [],\r
checked = {},\r
flag_not = flags.not,\r
- i = 0, n = -1, uid,\r
- c, xnode, tmp, node, tagName;\r
- for( ; xnode = xmlList[ i ]; ++i ){\r
- uid = xnode._uid;\r
- tmp = checked[ uid ];\r
+ i = 0, n = -1,\r
+ c, xml, tmp, node, tagName, uid;\r
+\r
+ for( ; xml = xmlList[ i ]; ++i ){\r
+ tmp = checked[ i ];\r
if( tmp === undefined ){\r
- for( c = 0, node = xnode.parentNode[ pointer ], tagName = flag_all || xnode.tagName; node; node = node[ sibling ] ){\r
+ for( c = 0, node = xml.parentNode[ pointer ], tagName = flag_all || xml.tagName; node; node = node[ sibling ] ){\r
if( node.nodeType === 1 && ( flag_all || tagName === node.tagName ) ){\r
++c;\r
- checked[ node._uid ] = a === 0 ? c === b : (c - b) % a === 0 && (c - b) / a >= 0;\r
- }; \r
+ uid = uids.indexOf( node );\r
+ if( uid === -1 ) uids[ uid = uids.length ] = node;\r
+ checked[ uid ] = a === 0 ? c === b : (c - b) % a === 0 && (c - b) / a >= 0;\r
+ };\r
};\r
- tmp = checked[ uid ];\r
+ tmp = checked[ i ];\r
};\r
- if( tmp ^ flag_not ) res[ ++n ] = xnode;\r
+ if( tmp ^ flag_not ) res[ ++n ] = xml;\r
};\r
return res;\r
};\r
function XMLWrapper_funcSelectorProp( prop, flag, flags, xmlList ){\r
var res = [],\r
flag_not = flag ? flags.not : !flags.not,\r
- i = 0, n = -1, xnode;\r
- for( ; xnode = xmlList[ i ]; ++i ){\r
- if( xnode.getAttributeNode( prop ) ^ flag_not ) res[ ++n ] = xnode;\r
+ i = 0, n = -1, xml;\r
+ for( ; xml = xmlList[ i ]; ++i ){\r
+ if( xml.getAttributeNode( prop ) ^ flag_not ) res[ ++n ] = xml;\r
};\r
return res;\r
}; */\r
m : function( flags, xmlList ){\r
var res = [],\r
flag_not = flags.not,\r
- i = 0, n = -1, xnode, tmp, node;\r
- for( ; xnode = xmlList[i]; ++i ){\r
+ i = 0, n = -1, xml, tmp, node;\r
+ for( ; xml = xmlList[i]; ++i ){\r
tmp = true;\r
- for( node = xnode.firstChild; node; node = node.nextSibling ){\r
+ for( node = xml.firstChild; node; node = node.nextSibling ){\r
if( node.nodeType === 1 || ( node.nodeType === 3 && node.nodeValue ) ){\r
tmp = false;\r
break;\r
}; \r
};\r
- if( tmp ^ flag_not ) res[ ++n ] = xnode;\r
+ if( tmp ^ flag_not ) res[ ++n ] = xml;\r
};\r
return res;\r
}\r
m : function( flags, xmlList, arg ){\r
var res = [],\r
flag_not = flags.not,\r
- i = 0, n = -1, xnode, text = '';\r
+ i = 0, n = -1, xml, text = '';\r
\r
- for( ; xnode = xmlList[ i ]; ++i ){\r
- switch( xnode.nodeType ){\r
+ for( ; xml = xmlList[ i ]; ++i ){\r
+ switch( xml.nodeType ){\r
case 1 :\r
- text = xml.nodeType === 1 ? xml.innerText || xml.text || xml.textContent : xml.nodeValue;\r
+ text = xml.innerText || xml.text || xml.textContent;\r
break;\r
//case 2 :\r
case 3 :\r
- text = xnode.nodeValue;\r
+ text = xml.nodeValue;\r
break;\r
};\r
- console.log( text + ' ' + arg );\r
- if ( ( -1 < text.indexOf( arg ) ) ^ flag_not ) res[ ++n ] = xnode; \r
+ if ( ( -1 < text.indexOf( arg ) ) ^ flag_not ) res[ ++n ] = xml; \r
};\r
return res;\r
}\r
if( scrollBox.hasVScroll ){\r
if( !XUI_ScrollBox_indicatorV ){\r
XUI_ScrollBox_indicatorV = X_Doc_create( 'div' )[ 'className' ]( 'ScrollBox-IndicatorV' );\r
- \r
};\r
+ if( XUI_ScrollBox_current )\r
+ XUI_ScrollBox_current[ 'unlisten' ]( [ X_EVENT_CANCELED, XUI_Event.SCROLL_END ], XUI_ScrollBox_indicatorV, XUI_ScrollBox_indicatorHandleEvent );\r
+ \r
scrollBox.xnode[ 'append' ]( XUI_ScrollBox_indicatorV );\r
XUI_ScrollBox_indicatorV[ 'animate' ](\r
{ opacity : 0 },\r
);\r
scrollBox\r
[ 'listenOnce' ]( [ X_EVENT_CANCELED, XUI_Event.SCROLL_END ], XUI_ScrollBox_indicatorV, XUI_ScrollBox_indicatorHandleEvent );\r
+ } else\r
+ if( XUI_ScrollBox_indicatorV ){\r
+ XUI_ScrollBox_indicatorV[ 'remove' ]();\r
};\r
+ \r
if( scrollBox.hasHScroll ){\r
if( !XUI_ScrollBox_indicatorH ){\r
XUI_ScrollBox_indicatorH = X_Doc_create( 'div' )[ 'className' ]( 'ScrollBox-IndicatorH' );\r
};\r
+ if( XUI_ScrollBox_current )\r
+ XUI_ScrollBox_current[ 'unlisten' ]( [ X_EVENT_CANCELED, XUI_Event.SCROLL_END ], XUI_ScrollBox_indicatorH, XUI_ScrollBox_indicatorHandleEvent );\r
scrollBox.xnode[ 'append' ]( XUI_ScrollBox_indicatorH );\r
XUI_ScrollBox_indicatorH[ 'animate' ](\r
{ opacity : 0 },\r
);\r
scrollBox\r
[ 'listenOnce' ]( [ X_EVENT_CANCELED, XUI_Event.SCROLL_END ], XUI_ScrollBox_indicatorH, XUI_ScrollBox_indicatorHandleEvent );\r
+ } else\r
+ if( XUI_ScrollBox_indicatorH ){\r
+ XUI_ScrollBox_indicatorH[ 'remove' ]();\r
};\r
+ XUI_ScrollBox_current = scrollBox;\r
};\r
\r
function XUI_ScrollBox_indicatorHandleEvent( e ){\r