From e761e0c6e0561093ff1e52d0cba6ace04daa8798 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Mon, 23 Jul 2012 12:48:29 -0400 Subject: [PATCH] Support event delegation with relative selectors. Fixes #10762. Closes gh-860. --- src/traversing.js | 8 ++++---- test/unit/event.js | 17 ++++++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/traversing.js b/src/traversing.js index 625b9f4c9..321c25197 100644 --- a/src/traversing.js +++ b/src/traversing.js @@ -1,7 +1,7 @@ var runtil = /Until$/, rparentsprev = /^(?:parents|prev(?:Until|All))/, isSimple = /^.[^:#\[\.,]*$/, - POS = jQuery.expr.match.globalPOS, + rneedsContext = jQuery.expr.match.needsContext, // methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, @@ -72,9 +72,9 @@ jQuery.fn.extend({ is: function( selector ) { return !!selector && ( typeof selector === "string" ? - // If this is a positional selector, check membership in the returned set + // If this is a positional/relative selector, check membership in the returned set // so $("p:first").is("p:last") won't return true for a doc with two "p". - POS.test( selector ) ? + rneedsContext.test( selector ) ? jQuery( selector, this.context ).index( this[0] ) >= 0 : jQuery.filter( selector, this ).length > 0 : this.filter( selector ).length > 0 ); @@ -85,7 +85,7 @@ jQuery.fn.extend({ i = 0, l = this.length, ret = [], - pos = POS.test( selectors ) || typeof selectors !== "string" ? + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? jQuery( selectors, context || this.context ) : 0; diff --git a/test/unit/event.js b/test/unit/event.js index 502649a90..dacb03355 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2342,17 +2342,20 @@ test("jQuery.off using dispatched jQuery.Event", function() { .remove(); }); -test( "delegated event with delegateTarget-relative selector (#)", function() { - expect(1); - var markup = jQuery( '