From f1f6bc3ec43d86f5b2a0c2b8bf711a2d35930717 Mon Sep 17 00:00:00 2001 From: John Resig Date: Tue, 28 Sep 2010 10:33:21 -0700 Subject: [PATCH] Handle child selectors in particular - away from the selector engine. Fixes #7029. --- src/traversing.js | 6 ++++++ test/unit/traversing.js | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/traversing.js b/src/traversing.js index dff1087..f57819d 100644 --- a/src/traversing.js +++ b/src/traversing.js @@ -4,11 +4,17 @@ var runtil = /Until$/, rparentsprev = /^(?:parents|prevUntil|prevAll)/, // Note: This RegExp should be improved, or likely pulled from Sizzle rmultiselector = /,/, + rchild = /^\s*>/, isSimple = /^.[^:#\[\.,]*$/, slice = Array.prototype.slice; 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, "" ) ); + } + var ret = this.pushStack( "", "find", selector ), length = 0; for ( var i = 0, l = this.length; i < l; i++ ) { diff --git a/test/unit/traversing.js b/test/unit/traversing.js index f5c88e4..0636f0c 100644 --- a/test/unit/traversing.js +++ b/test/unit/traversing.js @@ -1,12 +1,14 @@ module("traversing"); test("find(String)", function() { - expect(2); + expect(3); equals( 'Yahoo', jQuery('#foo').find('.blogTest').text(), 'Check for find' ); // using contents will get comments regular, text, and comment nodes var j = jQuery("#nonnodes").contents(); 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" ); }); test("is(String)", function() { -- 1.7.10.4