if ( extra ) {
Sizzle( extra, context, results, seed );
+
+ if ( sortOrder ) {
+ hasDuplicate = false;
+ results.sort(sortOrder);
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[i-1] ) {
+ results.splice(i--, 1);
+ }
+ }
+ }
+ }
}
return results;
}
},
NAME: function(match, context, isXML){
- if ( typeof context.getElementsByName !== "undefined" && !isXML ) {
- return context.getElementsByName(match[1]);
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = context.getElementsByName(match[1]);
+ return ret.length === 0 ? null : ret;
}
},
TAG: function(match, context){
};
}
+var sortOrder;
+
+if ( Array.prototype.indexOf ) {
+ var indexOf = Array.prototype.indexOf,
+ allSort = document.getElementsByTagName("*");
+
+ sortOrder = function( a, b ) {
+ var ret = indexOf.call( allSort, a ) - indexOf.call( allSort, b );
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( document.documentElement.sourceIndex === 1 ) {
+ sortOrder = function( a, b ) {
+ var ret = a.sourceIndex - b.sourceIndex;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+}
+
// Check to see if the browser returns elements by name when
// querying by getElementById (and provide a workaround)
(function(){