Fixed the issue where $("body").find("div#foo") would ignore the specified tag name...
authorJohn Resig <jeresig@gmail.com>
Mon, 27 Aug 2007 04:58:02 +0000 (04:58 +0000)
committerJohn Resig <jeresig@gmail.com>
Mon, 27 Aug 2007 04:58:02 +0000 (04:58 +0000)
src/selector/selector.js
src/selector/selectorTest.js

index b15ee7c..5fc3e0e 100644 (file)
@@ -247,7 +247,7 @@ jQuery.extend({
                                                // We need to find all descendant elements
                                                for ( var i = 0; ret[i]; i++ ) {
                                                        // Grab the tag name being searched for
-                                                       var tag = m[1] != "" || m[0] == "" ? "*" : m[2];
+                                                       var tag = m[1] == "#" && m[3] ? m[3] : m[1] != "" || m[0] == "" ? "*" : m[2];
 
                                                        // Handle IE7 being really dumb about <object>s
                                                        if ( tag == "*" && ret[i].nodeName.toLowerCase() == "object" )
index 7a4789a..458804b 100644 (file)
@@ -41,7 +41,7 @@ test("broken", function() {
 });
 
 test("id", function() {
-       expect(24);
+       expect(25);
        t( "ID Selector", "#body", ["body"] );
        t( "ID Selector w/ Element", "body#body", ["body"] );
        t( "ID Selector w/ Element", "ul#first", [] );
@@ -72,6 +72,8 @@ test("id", function() {
        t( "ID Selector on Form with an input that has a name of 'id'", "#lengthtest", ["lengthtest"] );
        
        t( "ID selector with non-existant ancestor", "#asdfasdf #foobar", [] ); // bug #986
+
+       isSet( $("body").find("div#form"), [], "ID selector within the context of another element" );
 });
 
 test("class", function() {