From: John Resig Date: Tue, 12 Oct 2010 13:19:49 +0000 (-0400) Subject: Make sure that .find() with multiple direct child selectors is handled correctly... X-Git-Tag: 1.4.3rc2~4 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5200194f517a7bde7bbe9aa50dc1e81f1e1db441;p=jquery.git Make sure that .find() with multiple direct child selectors is handled correctly. Fixes #7144. --- diff --git a/src/traversing.js b/src/traversing.js index 5a479f2ef..968aab036 100644 --- a/src/traversing.js +++ b/src/traversing.js @@ -4,7 +4,7 @@ var runtil = /Until$/, rparentsprev = /^(?:parents|prevUntil|prevAll)/, // Note: This RegExp should be improved, or likely pulled from Sizzle rmultiselector = /,/, - rchild = /^\s*>/, + rchild = /(^|,)\s*>/g, isSimple = /^.[^:#\[\.,]*$/, slice = Array.prototype.slice, POS = jQuery.expr.match.POS; @@ -13,7 +13,7 @@ jQuery.fn.extend({ find: function( selector ) { // Handle "> div" child selectors and pass them to .children() if ( typeof selector === "string" && rchild.test( selector ) ) { - return this.children( selector.replace( rchild, "" ) ); + return this.children( selector.replace( rchild, "$1" ) ); } var ret = this.pushStack( "", "find", selector ), length = 0; diff --git a/test/unit/traversing.js b/test/unit/traversing.js index f9e79372a..3332f077c 100644 --- a/test/unit/traversing.js +++ b/test/unit/traversing.js @@ -1,7 +1,7 @@ module("traversing"); test("find(String)", function() { - expect(3); + expect(4); equals( 'Yahoo', jQuery('#foo').find('.blogTest').text(), 'Check for find' ); // using contents will get comments regular, text, and comment nodes @@ -9,6 +9,7 @@ test("find(String)", function() { equals( j.find("div").length, 0, "Check node,textnode,comment to find zero divs" ); same( jQuery("#main").find("> div").get(), q("foo", "moretests", "tabindex-tests", "liveHandlerOrder", "siblingTest"), "find child elements" ); + same( jQuery("#main").find("> #foo, > #moretests").get(), q("foo", "moretests"), "find child elements" ); }); test("is(String)", function() {