When a native browser event is bubbling up the DOM, make sure that the correct isDefa...
[jquery.git] / test / unit / event.js
index 54431dd..d0183f8 100644 (file)
@@ -295,6 +295,44 @@ test("live/delegate immediate propagation", function() {
        $p.undelegate( "click" );
 });
 
+test("bind/delegate bubbling, isDefaultPrevented", function() {
+       expect(2);
+       var $anchor2 = jQuery( "#anchor2" ),
+               $main = jQuery( "#main" ),
+               fakeClick = function($jq) {
+                       // Prefer a native click so we don't get jQuery simulated bubbling
+                       if ( $jq[0].click ) {
+                               $jq[0].click(); // IE
+                       }
+                       else if ( document.createEvent ) {
+                               var e = document.createEvent( 'MouseEvents' );
+                               e.initEvent( "click", true, true ); 
+                               $jq[0].dispatchEvent(e);
+                       }
+                       else {
+                               $jq.click();
+                       }
+               };
+       $anchor2.click(function(e) {
+               e.preventDefault();
+       });
+       $main.delegate("#foo", "click", function(e) {
+               equals( e.isDefaultPrevented(), true, "isDefaultPrevented true passed to bubbled event" );
+       });
+       fakeClick( $anchor2 );
+       $anchor2.unbind( "click" );
+       $main.undelegate( "click" );
+       $anchor2.click(function(e) {
+               // Let the default action occur
+       });
+       $main.delegate("#foo", "click", function(e) {
+               equals( e.isDefaultPrevented(), false, "isDefaultPrevented false passed to bubbled event" );
+       });
+       fakeClick( $anchor2 );
+       $anchor2.unbind( "click" );
+       $main.undelegate( "click" );
+});
+
 test("bind(), iframes", function() {
        // events don't work with iframes, see #939 - this test fails in IE because of contentDocument
        var doc = jQuery("#loadediframe").contents();
@@ -493,7 +531,7 @@ test("bind(name, false), unbind(name, false)", function() {
 });
 
 test("bind()/trigger()/unbind() on plain object", function() {
-       expect( 7 );
+       expect( 8 );
 
        var obj = {};
 
@@ -503,8 +541,13 @@ test("bind()/trigger()/unbind() on plain object", function() {
        // Make sure it doesn't complain when no events are found
        jQuery(obj).unbind("test");
 
-       jQuery(obj).bind("test", function(){
-               ok( true, "Custom event run." );
+       jQuery(obj).bind({
+               test: function() {
+                       ok( true, "Custom event run." );
+               },
+               submit: function() {
+                       ok( true, "Custom submit event run." );
+               }
        });
 
        var events = jQuery(obj).data("__events__");
@@ -516,8 +559,10 @@ test("bind()/trigger()/unbind() on plain object", function() {
 
        // Should trigger 1
        jQuery(obj).trigger("test");
+       jQuery(obj).trigger("submit");
 
        jQuery(obj).unbind("test");
+       jQuery(obj).unbind("submit");
 
        // Should trigger 0
        jQuery(obj).trigger("test");