I corrected the joinResultsHelper:
function joinResultsHelper( res, a, i, b, j ) {
if ( b && b[j] ) {
for ( var l = a.length; i < l; ++i ) {
if ( a[i] === b[j] && !b[++j] )
return joinResultsHelper( res, a, i )
else if ( precedes(a[i], b[j]) )
res.push( a[i] );
else {
res.push( b[j++] );
joinResultsHelper( res, b, j, a, i );
break;
}
}
} else {
for ( var l = a.length; i < l; ++i )
res.push( a[i] );
}
return res;
}
On Feb 14, 12:26 am, Robert Katić <[email protected]> wrote:
> The querySelectorAll returns elements in documents order, but Sizzle
> (for now?) treat each selector separately.
>
> Maybe this can be easily resolved joining each result array in one
> with nodes in documents order?
> If so, maybe something like this would help (not tested). Or you are
> thinking to sort results all together?
>
> var precedes = ( document.documentElement.sourceIndex == 0 ) &&
> function( a, b ) {
> return a.sourceIndex < b.sourceIndex;
> }
> || ( document.documentElement.compareDocumentPosition ) &&
> function( a, b ) {
> return !!( a.compareDocumentPosition(b) & 4 );
> }
> || function( a, b ) {
> if ( a === b || b.contains(a) )
> return false
>
> if ( a.contains(b) )
> return true;
>
> var c = a.parentNode;
> while ( !c.contains(b) ) {
> a = c;
> c = c.parentNode;
> }
>
> var p = b.parentNode;
> while ( p !== c ) {
> b = p;
> p = p.parentNode;
> }
>
> var nodes = c.childNodes;
> for ( var i = 0, node = nodes[0]; node; node = nodes[+
> +i] ) {
> if ( node === a )
> return true;
> if ( node === b )
> return false;
> }
>
> return false;
> };
>
> function joinResultsHelper( res, a, i, b, j ) {
> if ( b[j] ) {
> for ( var l = a.length; i < l; ++i ) {
> if ( a[i] === b[j] )
> ++j;
>
> else if ( precedes(a[i], b[j]) )
> res.push( a[i] );
>
> else {
> res.push( b[j++] );
> joinResultsHelper( res, b, j, a, i );
> break;
> }
> }
> } else {
> for ( var l = a.length; i < l; ++i )
> res.push( a[i] );
> }
>
> return res;
>
> }
>
> function joinResults( a, b ) {
> if ( a.length === 0 )
> return b;
>
> if ( b.length === 0 )
> return a;
>
> return joinResultsHelper( [], a, 0, b, 0 );
>
> }
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jQuery Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---