Added support for bubbling triggered events.
This commit is contained in:
parent
6b09032864
commit
25885e07b2
|
@ -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() {
|
||||||
}).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");
|
||||||
|
|
Loading…
Reference in a new issue