diff --git a/src/event.js b/src/event.js index c3da76752..aeee603f7 100644 --- a/src/event.js +++ b/src/event.js @@ -263,7 +263,7 @@ jQuery.event = { // Allow special events to draw outside the lines special = jQuery.event.special[ type ] || {}; - if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { return; } @@ -523,7 +523,15 @@ jQuery.event = { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, - + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input") && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + } + }, focus: { delegateType: "focusin" }, diff --git a/test/unit/event.js b/test/unit/event.js index db968284f..f2f3cddd4 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2831,6 +2831,35 @@ test("clone() delegated events (#11076)", function() { clone.remove(); }); +test("checkbox state (#3827)", function() { + expect( 9 ); + + var markup = jQuery("