From 5200194f517a7bde7bbe9aa50dc1e81f1e1db441 Mon Sep 17 00:00:00 2001 From: John Resig Date: Tue, 12 Oct 2010 09:19:49 -0400 Subject: [PATCH] Make sure that .find() with multiple direct child selectors is handled correctly. Fixes #7144. --- src/traversing.js | 4 ++-- test/unit/traversing.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/traversing.js b/src/traversing.js index 5a479f2..968aab0 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 f9e7937..3332f07 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() { -- 1.7.10.4