Skip to content

Commit 7f5179b

Browse files
committed
Make sure that unbinding on a plain javascript object works correctly. Fixes #6184.
1 parent 28b489b commit 7f5179b

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/event.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -525,10 +525,14 @@ jQuery.event = {
525525

526526
var removeEvent = document.removeEventListener ?
527527
function( elem, type, handle ) {
528-
elem.removeEventListener( type, handle, false );
528+
if ( elem.removeEventListener ) {
529+
elem.removeEventListener( type, handle, false );
530+
}
529531
} :
530532
function( elem, type, handle ) {
531-
elem.detachEvent( "on" + type, handle );
533+
if ( elem.detachEvent ) {
534+
elem.detachEvent( "on" + type, handle );
535+
}
532536
};
533537

534538
jQuery.Event = function( src ) {

test/unit/event.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,35 @@ test("bind(), with different this object", function() {
373373
ok( !jQuery.data(jQuery("#firstp")[0], "events"), "Event handler unbound when using different this object and data." );
374374
});
375375

376+
test("bind()/trigger()/unbind() on plain object", function() {
377+
expect( 2 );
378+
379+
var obj = {};
380+
381+
// Make sure it doesn't complain when no events are found
382+
jQuery(obj).trigger("test");
383+
384+
// Make sure it doesn't complain when no events are found
385+
jQuery(obj).unbind("test");
386+
387+
jQuery(obj).bind("test", function(){
388+
ok( true, "Custom event run." );
389+
});
390+
391+
ok( jQuery(obj).data("events"), "Object has events bound." );
392+
393+
// Should trigger 1
394+
jQuery(obj).trigger("test");
395+
396+
jQuery(obj).unbind("test");
397+
398+
// Should trigger 0
399+
jQuery(obj).trigger("test");
400+
401+
// Make sure it doesn't complain when no events are found
402+
jQuery(obj).unbind("test");
403+
});
404+
376405
test("unbind(type)", function() {
377406
expect( 0 );
378407

0 commit comments

Comments
 (0)