Event: Fix chaining .on() with null handlers

Fixes gh-2846
This commit is contained in:
Devin Wilson 2016-01-13 21:06:43 -07:00 committed by Timmy Willison
parent 780cac802b
commit 17f0e26ad9
2 changed files with 24 additions and 0 deletions

View File

@ -70,6 +70,8 @@ function on( elem, types, selector, data, fn, one ) {
} }
if ( fn === false ) { if ( fn === false ) {
fn = returnFalse; fn = returnFalse;
} else if ( !fn ) {
return elem;
} }
if ( one === 1 ) { if ( one === 1 ) {

View File

@ -5,6 +5,28 @@ QUnit.module( "event", {
teardown: moduleTeardown teardown: moduleTeardown
} ); } );
QUnit.test( "null or undefined handler", function( assert ) {
assert.expect( 4 );
// Supports Fixes bug #7229
try {
jQuery( "#firstp" ).on( "click", null );
assert.ok( true, "Passing a null handler will not throw an exception" );
} catch ( e ) {}
try {
jQuery( "#firstp" ).on( "click", undefined );
assert.ok( true, "Passing an undefined handler will not throw an exception" );
} catch ( e ) {}
var expectedElem = jQuery( "#firstp" );
var actualElem = expectedElem.on( "click", null );
assert.equal(actualElem, expectedElem, "Passing a null handler should return the original element");
actualElem = expectedElem.on( "click", undefined );
assert.equal(actualElem, expectedElem, "Passing a null handler should return the original element");
} );
QUnit.test( "on() with non-null,defined data", function( assert ) { QUnit.test( "on() with non-null,defined data", function( assert ) {
assert.expect( 2 ); assert.expect( 2 );