e.cancelBubble = true;
},
stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && e.stopImmediatePropagation ) {
+ e.stopImmediatePropagation();
+ }
+
this.stopPropagation();
}
};
$p.off( "click", "**" );
});
-test("on bubbling, isDefaultPrevented", function() {
- expect(2);
+test("on bubbling, isDefaultPrevented, stopImmediatePropagation", function() {
+ expect( 3 );
var $anchor2 = jQuery( "#anchor2" ),
$main = jQuery( "#qunit-fixture" ),
+ neverCallMe = function() {
+ ok( false, "immediate propagation should have been stopped" );
+ },
fakeClick = function($jq) {
// Use a native click so we don't get jQuery simulated bubbling
if ( document.createEvent ) {
fakeClick( $anchor2 );
$anchor2.off( "click" );
$main.off( "click", "**" );
+
+ if ( !window.addEventListener ) {
+ ok( true, "Old IE, skipping native stopImmediatePropagation check" );
+ } else {
+ $anchor2.on( "click", function( e ) {
+ e.stopImmediatePropagation();
+ ok( true, "anchor was clicked and prop stopped" );
+ });
+ $anchor2[0].addEventListener( "click", neverCallMe, false );
+ fakeClick( $anchor2 );
+ $anchor2[0].removeEventListener( "click", neverCallMe );
+ }
});
test("on(), iframes", function() {