To ensure order and uniqueness with XML and non current documents too,
we have to ensure that the NodeList "allSort" is the correct one.
Maybe something like this:
function sortNodes( array ) {
if ( array.length === 0 )
return;
if ( allSort && allSort._document !== array[0].ownerDocument ) {
var doc = array[0].ownerDocument;
allSort = doc.getElementsByTagName("*");
allSort._document = doc;
}
hasDuplicate = false;
array.sort(sortOrder);
if ( hasDuplicate ) {
var i = array.length;
while ( i-- ) {
if ( array[i] === array[i-1] ) {
array.splice(i--, 1);
}
}
}
}
You will notice that this sorting function removes duplicates too. The
reason way I putted all inside, is the possibility to easily expose
this functionality to the API.
So in function Sizzle (line 115) it can be used like this:
if ( sortOrder && arguments.callee !== arguments.callee.caller ) {
sortNodes( results );
}
Of course, in that case you will add this on line 689:
allSort._document = document;
or simply replace line 688 with:
allSort = true;
Or is there something that I haven't catch?
On Feb 14, 7:11 pm, John Resig <[email protected]> wrote:
> > Nice job John, I like your solution very much.
>
> Thanks!
>
> > But if I am right, the querySelectorAll will always fall with no
> > standard filters, so we have to ensure order and uniqueness on all
> > browsers (?).
>
> Ah - so you mean the case where someone does: "div:first, p:first"
>
> Hmm - good point. I just landed a solution for this that seems to work
> well:http://github.com/jeresig/sizzle/commit/c2f4a8a68f59409e86d6b0c01edea...
>
> --John
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---