Skip to content
Permalink
Browse files

Fix #10701, .preventDefault if an inline handler returns false.

Baby unicorns are slapped each time you use inline handlers, so do it sparingly.
  • Loading branch information...
dmethvin committed Nov 7, 2011
1 parent 1e677f3 commit 90c907e8b65bc9d323863fc57389f2dca611292d
Showing with 15 additions and 2 deletions.
  1. +3 −2 src/event.js
  2. +12 −0 test/unit/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() ) {
@@ -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('<div><a href="#" onclick="return false">x</a></div>');
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);

0 comments on commit 90c907e

Please sign in to comment.
You can’t perform that action at this time.