Commit 25885e07 authored by John Resig's avatar John Resig

Added support for bubbling triggered events.

parent 6b090328
...@@ -212,6 +212,12 @@ jQuery.event = { ...@@ -212,6 +212,12 @@ jQuery.event = {
if ( (!fn || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false ) if ( (!fn || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
val = 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 // Extra functions don't get the custom event object
if ( event ) if ( event )
data.shift(); data.shift();
......
...@@ -198,6 +198,40 @@ test("trigger() shortcuts", function() { ...@@ -198,6 +198,40 @@ test("trigger() shortcuts", function() {
}).load(); }).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() { test("unbind(event)", function() {
expect(8); expect(8);
var el = jQuery("#firstp"); var el = jQuery("#firstp");
...@@ -400,4 +434,4 @@ test("event properties", function() { ...@@ -400,4 +434,4 @@ test("event properties", function() {
start(); start();
}).click(); }).click();
}); });
*/ */
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment