Provide a graceful failover for [name=foo] queries that are looking for non-input...
[jquery.git] / src / selector.js
index 5712f57..ecec83b 100644 (file)
@@ -333,8 +333,9 @@ var Expr = Sizzle.selectors = {
                        }
                },
                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){
@@ -663,9 +664,12 @@ try {
 
 var sortOrder;
 
-if ( document.documentElement.compareDocumentPosition ) {
+if ( Array.prototype.indexOf ) {
+       var indexOf = Array.prototype.indexOf,
+               allSort = document.getElementsByTagName("*");
+
        sortOrder = function( a, b ) {
-               var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
+               var ret = indexOf.call( allSort, a ) - indexOf.call( allSort, b );
                if ( ret === 0 ) {
                        hasDuplicate = true;
                }