Provide a graceful failover for [name=foo] queries that are looking for non-input/iframe/form elements. Fixes jQuery bug #4081.

This commit is contained in:
John Resig 2009-02-14 22:24:55 +00:00
parent 782b4af76e
commit 21dde30348
3 changed files with 8 additions and 5 deletions

View file

@ -333,8 +333,9 @@ var Expr = Sizzle.selectors = {
} }
}, },
NAME: function(match, context, isXML){ NAME: function(match, context, isXML){
if ( typeof context.getElementsByName !== "undefined" && !isXML ) { if ( typeof context.getElementsByName !== "undefined" ) {
return context.getElementsByName(match[1]); var ret = context.getElementsByName(match[1]);
return ret.length === 0 ? null : ret;
} }
}, },
TAG: function(match, context){ TAG: function(match, context){

View file

@ -121,8 +121,8 @@
<input name="types[]" id="types_movie" type="checkbox" value="movie" /> <input name="types[]" id="types_movie" type="checkbox" value="movie" />
</form> </form>
<div id="fx-queue"> <div id="fx-queue" name="test">
<div id="fadein" class='chain test'>fadeIn<div>fadeIn</div></div> <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="fadeout" class='chain test out'>fadeOut<div>fadeOut</div></div>
<div id="show" class='chain test'>show<div>show</div></div> <div id="show" class='chain test'>show<div>show</div></div>

View file

@ -134,12 +134,14 @@ test("class", function() {
}); });
test("name", function() { test("name", function() {
expect(7); expect(9);
t( "Name selector", "input[name=action]", ["text1"] ); t( "Name selector", "input[name=action]", ["text1"] );
t( "Name selector with single quotes", "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 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 non-input", "*[name=iframe]", ["iframe"] );
t( "Name selector for grouped input", "input[name='types[]']", ["types_all", "types_anime", "types_movie"] ) t( "Name selector for grouped input", "input[name='types[]']", ["types_all", "types_anime", "types_movie"] )