X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fselector.js;h=3e1d7115d2a82f123d2792d81be529b827c3c325;hb=75a973da35d4ad6583ebef8c389cebbef61bc5b4;hp=6538d9706d8b1f65be6896a54b99d4a0e31ae4ef;hpb=4b7e1c906f497784329622d82da08c8646cae7e6;p=jquery.git diff --git a/src/selector.js b/src/selector.js index 6538d97..3e1d711 100644 --- a/src/selector.js +++ b/src/selector.js @@ -692,20 +692,22 @@ if ( document.documentElement.compareDocumentPosition ) { } return ret; }; -} else if ( Array.prototype.indexOf ) { - var indexOf = Array.prototype.indexOf, - allSort = document.getElementsByTagName("*"); - +} else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { - var ret = indexOf.call( allSort, a ) - indexOf.call( allSort, b ); + var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; -} else if ( "sourceIndex" in document.documentElement ) { +} else if ( document.createRange ) { sortOrder = function( a, b ) { - var ret = a.sourceIndex - b.sourceIndex; + var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); + aRange.selectNode(a); + aRange.collapse(true); + bRange.selectNode(b); + bRange.collapse(true); + var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; }