Showing with 28 additions and 37 deletions.
  1. +3 −7 src/event.js
  2. +3 −3 src/manipulation.js
  3. 0 src/{ → manipulation}/var/rcheckableType.js
  4. +1 −1 src/serialize.js
  5. +21 −26 test/unit/event.js
@@ -3,15 +3,13 @@ define( [
"./var/document",
"./var/documentElement",
"./var/rnothtmlwhite",
"./var/rcheckableType",
"./var/slice",
"./data/var/dataPriv",
"./core/nodeName",

"./core/init",
"./selector"
], function( jQuery, document, documentElement, rnothtmlwhite,
rcheckableType, slice, dataPriv, nodeName ) {
], function( jQuery, document, documentElement, rnothtmlwhite, slice, dataPriv, nodeName ) {

"use strict";

@@ -477,11 +475,9 @@ jQuery.event = {
},
click: {

// For checkable types, fire native event so checked state will be right
// For checkbox, fire native event so checked state will be right
trigger: function() {
if ( rcheckableType.test( this.type ) &&
this.click && nodeName( this, "input" ) ) {

if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
this.click();
return false;
}
@@ -2,8 +2,8 @@ define( [
"./core",
"./var/concat",
"./var/push",
"./var/rcheckableType",
"./core/access",
"./manipulation/var/rcheckableType",
"./manipulation/var/rtagName",
"./manipulation/var/rscriptType",
"./manipulation/wrapMap",
@@ -22,8 +22,8 @@ define( [
"./traversing",
"./selector",
"./event"
], function( jQuery, concat, push, rcheckableType,
access, rtagName, rscriptType,
], function( jQuery, concat, push, access,
rcheckableType, rtagName, rscriptType,
wrapMap, getAll, setGlobalEval, buildFragment, support,
dataPriv, dataUser, acceptData, DOMEval, nodeName ) {

File renamed without changes.
@@ -1,6 +1,6 @@
define( [
"./core",
"./var/rcheckableType",
"./manipulation/var/rcheckableType",
"./core/init",
"./traversing", // filter
"./attributes/prop"
@@ -2364,48 +2364,33 @@ QUnit.test( "clone() delegated events (#11076)", function( assert ) {
clone.remove();
} );

QUnit.test( "checkbox state (#3827, gh-3423)", function( assert ) {
assert.expect( 17 );
QUnit.test( "checkbox state (#3827)", function( assert ) {
assert.expect( 9 );

var cbParent = jQuery( "<div><input type=checkbox><div>" ).appendTo( "#qunit-fixture" ),
cb = cbParent.find( "input" )[ 0 ],
radioParent = jQuery(
"<div><input type=radio name=gh3423><input type=radio name=gh3423><div>"
).appendTo( "#qunit-fixture" ),
radio = radioParent.find( "input" )[ 0 ],
radio2 = radioParent.find( "input" )[ 1 ];
var markup = jQuery( "<div><input type=checkbox><div>" ).appendTo( "#qunit-fixture" ),
cb = markup.find( "input" )[ 0 ];

jQuery( cb ).on( "click", function() {
assert.equal( this.checked, false, "just-clicked checkbox is not checked" );
} );
cbParent.on( "click", function() {
markup.on( "click", function() {
assert.equal( cb.checked, false, "checkbox is not checked in bubbled event" );
} );
radioParent.on( "click", function() {
assert.equal( radio.checked, false, "radio is not checked in bubbled event" );
} );

// Native click
cb.checked = radio.checked = true;
cb.checked = true;
assert.equal( cb.checked, true, "native - checkbox is initially checked" );
assert.equal( radio.checked, true, "native - radio is initially checked" );
cb.click();
radio2.click();
assert.equal( cb.checked, false, "native - checkbox is no longer checked" );
assert.equal( radio.checked, false, "native - radio is no longer checked" );

// jQuery click
cb.checked = radio.checked = true;
assert.equal( cb.checked, true, ".trigger - checkbox is initially checked" );
assert.equal( radio.checked, true, ".trigger - radio is initially checked" );
jQuery( [ cb, radio2 ] ).trigger( "click" );
assert.equal( cb.checked, false, ".trigger - checkbox is no longer checked" );
assert.equal( radio.checked, false, ".trigger - radio is no longer checked" );
cb.checked = true;
assert.equal( cb.checked, true, "jQuery - checkbox is initially checked" );
jQuery( cb ).trigger( "click" );
assert.equal( cb.checked, false, "jQuery - checkbox is no longer checked" );

// Handlers only; checkbox state remains false
jQuery( [ cb, radio2 ] ).triggerHandler( "click" );
assert.equal( cb.checked, false, ".triggerHandler - checkbox is still unchecked" );
assert.equal( radio.checked, false, ".triggerHandler - radio is still unchecked" );
jQuery( cb ).triggerHandler( "click" );
} );

QUnit.test( "hover event no longer special since 1.9", function( assert ) {
@@ -2930,6 +2915,16 @@ QUnit.test( "originalEvent property for Chrome, Safari, Fx & Edge of simulated e
outer.off( "focusin" );
} );

QUnit.test( "trigger('click') on radio passes extra params", function( assert ) {
assert.expect( 1 );
var $radio = jQuery( "<input type='radio' />" ).appendTo( "#qunit-fixture" )
.on( "click", function( e, data ) {
assert.ok( data, "Trigger data is passed to radio click handler" );
} );

$radio.trigger( "click", [ true ] );
} );

QUnit[ jQuery.fn.click ? "test" : "skip" ]( "trigger() shortcuts", function( assert ) {
assert.expect( 5 );