Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added support for bubbling triggered events.

  • Loading branch information...
commit 25885e07b2683601a20481d614d282ded419793e 1 parent 6b09032
@jeresig jeresig authored
Showing with 41 additions and 1 deletion.
  1. +6 −0 src/event.js
  2. +35 −1 test/unit/event.js
View
6 src/event.js
@@ -212,6 +212,12 @@ jQuery.event = {
if ( (!fn || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
val = false;
+ if ( donative !== false && val !== false ) {
+ var parent = elem.parentNode || elem.ownerDocument;
+ if ( parent )
+ jQuery.event.trigger(type, data, parent, donative);
+ }
+
// Extra functions don't get the custom event object
if ( event )
data.shift();
View
36 test/unit/event.js
@@ -198,6 +198,40 @@ test("trigger() shortcuts", function() {
}).load();
});
+test("trigger() bubbling", function() {
+ expect(14);
+
+ var doc = 0, html = 0, body = 0, main = 0, ap = 0;
+
+ jQuery(document).bind("click", function(){ doc++; });
+ jQuery("html").bind("click", function(){ html++; });
+ jQuery("body").bind("click", function(){ body++; });
+ jQuery("#main").bind("click", function(){ main++; });
+ jQuery("#ap").bind("click", function(){ ap++; return false; });
+
+ jQuery("html").trigger("click");
+ equals( doc, 1, "HTML bubble" );
+ equals( html, 1, "HTML bubble" );
+
+ jQuery("body").trigger("click");
+ equals( doc, 2, "Body bubble" );
+ equals( html, 2, "Body bubble" );
+ equals( body, 1, "Body bubble" );
+
+ jQuery("#main").trigger("click");
+ equals( doc, 3, "Main bubble" );
+ equals( html, 3, "Main bubble" );
+ equals( body, 2, "Main bubble" );
+ equals( main, 1, "Main bubble" );
+
+ jQuery("#ap").trigger("click");
+ equals( doc, 3, "ap bubble" );
+ equals( html, 3, "ap bubble" );
+ equals( body, 2, "ap bubble" );
+ equals( main, 1, "ap bubble" );
+ equals( ap, 1, "ap bubble" );
+});
+
test("unbind(event)", function() {
expect(8);
var el = jQuery("#firstp");
@@ -400,4 +434,4 @@ test("event properties", function() {
start();
}).click();
});
-*/
+*/
Please sign in to comment.
Something went wrong with that request. Please try again.