diff --git a/src/event.js b/src/event.js index 0ccf23da3..9a1ac37d2 100644 --- a/src/event.js +++ b/src/event.js @@ -343,9 +343,10 @@ jQuery.event = { if ( handle ) { handle.apply( cur, data ); } + // Note that this is a bare JS function and not a jQuery handler handle = ontype && cur[ ontype ]; - if ( handle && jQuery.acceptData( cur ) ) { - handle.apply( cur, data ); + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); } if ( event.isPropagationStopped() ) { diff --git a/test/unit/event.js b/test/unit/event.js index 1305dd3ae..93049003a 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2273,6 +2273,18 @@ test("Non DOM element events", function() { jQuery(o).trigger("nonelementobj"); }); +test("inline handler returning false stops default", function() { + expect(1); + + var markup = jQuery('
'); + markup.click(function(e) { + ok( e.isDefaultPrevented(), "inline handler prevented default"); + return false; + }); + markup.find("a").click(); + markup.off("click"); +}); + test("window resize", function() { expect(2);