]> source.dussan.org Git - jquery.git/commitdiff
Event: Fix chaining .on() with null handlers
authorDevin Wilson <dwilson6.github@gmail.com>
Thu, 14 Jan 2016 04:06:43 +0000 (21:06 -0700)
committerTimmy Willison <timmywillisn@gmail.com>
Tue, 19 Jan 2016 17:27:58 +0000 (12:27 -0500)
Fixes gh-2846

src/event.js
test/unit/event.js

index ddd92c5fc79a297f8f38c11343fb6c397ec20ff9..c8a14fe7df3db8df5369f63eec7f05014726eda2 100644 (file)
@@ -70,6 +70,8 @@ function on( elem, types, selector, data, fn, one ) {
        }
        if ( fn === false ) {
                fn = returnFalse;
+       } else if ( !fn ) {
+               return elem;
        }
 
        if ( one === 1 ) {
index 4a5611be8208704f37dec642ff5c9a105b81636f..fd7d86f7f95a0dd82c01b834be99ee5313cfd4a2 100644 (file)
@@ -5,6 +5,28 @@ QUnit.module( "event", {
        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 ) {
 
        assert.expect( 2 );