Provide a graceful failover for [name=foo] queries that are looking for non-input...
authorJohn Resig <jeresig@gmail.com>
Sat, 14 Feb 2009 22:24:55 +0000 (22:24 +0000)
committerJohn Resig <jeresig@gmail.com>
Sat, 14 Feb 2009 22:24:55 +0000 (22:24 +0000)
src/selector.js
test/index.html
test/unit/selector.js

index dd05065..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){
index 2c3545f..c415d11 100644 (file)
                        <input name="types[]" id="types_movie" type="checkbox" value="movie" />
                </form>
                
-               <div id="fx-queue">
-                       <div id="fadein" class='chain test'>fadeIn<div>fadeIn</div></div>
+               <div id="fx-queue" name="test">
+                       <div id="fadein" class='chain test' name='div'>fadeIn<div>fadeIn</div></div>
                        <div id="fadeout" class='chain test out'>fadeOut<div>fadeOut</div></div>
                        
                        <div id="show" class='chain test'>show<div>show</div></div>
index 715823a..9be9383 100644 (file)
@@ -134,12 +134,14 @@ test("class", function() {
 });
 
 test("name", function() {
-       expect(7);
+       expect(9);
 
        t( "Name selector", "input[name=action]", ["text1"] );
        t( "Name selector with single quotes", "input[name='action']", ["text1"] );
        t( "Name selector with double quotes", 'input[name="action"]', ["text1"] );
 
+       t( "Name selector non-input", "[name=test]", ["length", "fx-queue"] );
+       t( "Name selector non-input", "[name=div]", ["fadein"] );
        t( "Name selector non-input", "*[name=iframe]", ["iframe"] );
 
        t( "Name selector for grouped input", "input[name='types[]']", ["types_all", "types_anime", "types_movie"] )