Make sure that [name=FOO] searches actually have the specified name (IE includes...
[jquery.git] / src / selector.js
index ecec83b..4177672 100644 (file)
@@ -223,8 +223,6 @@ Sizzle.filter = function(expr, set, inplace, not){
                        }
                }
 
-               expr = expr.replace(/\s*,\s*/, "");
-
                // Improper expression
                if ( expr == old ) {
                        if ( anyFound == null ) {
@@ -334,7 +332,14 @@ var Expr = Sizzle.selectors = {
                },
                NAME: function(match, context, isXML){
                        if ( typeof context.getElementsByName !== "undefined" ) {
-                               var ret = context.getElementsByName(match[1]);
+                               var ret = [], results = context.getElementsByName(match[1]);
+
+                               for ( var i = 0, l = results.length; i < l; i++ ) {
+                                       if ( results[i].getAttribute("name") === match[1] ) {
+                                               ret.push( results[i] );
+                                       }
+                               }
+
                                return ret.length === 0 ? null : ret;
                        }
                },
@@ -399,7 +404,7 @@ var Expr = Sizzle.selectors = {
                PSEUDO: function(match, curLoop, inplace, result, not){
                        if ( match[1] === "not" ) {
                                // If we're dealing with a complex expression, or a simple one
-                               if ( match[3].match(chunker).length > 1 ) {
+                               if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
                                        match[3] = Sizzle(match[3], null, null, curLoop);
                                } else {
                                        var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);