Skip to content
Permalink
Browse files

Make sure that unbinding on a plain javascript object works correctly…

…. Fixes #6184.
  • Loading branch information
jeresig committed Feb 26, 2010
1 parent 28b489b commit 7f5179b65431b77e89fa32623a5000e3630c191c
Showing with 35 additions and 2 deletions.
  1. +6 −2 src/event.js
  2. +29 −0 test/unit/event.js
@@ -525,10 +525,14 @@ jQuery.event = {

var removeEvent = document.removeEventListener ?
function( elem, type, handle ) {
elem.removeEventListener( type, handle, false );
if ( elem.removeEventListener ) {
elem.removeEventListener( type, handle, false );
}
} :
function( elem, type, handle ) {
elem.detachEvent( "on" + type, handle );
if ( elem.detachEvent ) {
elem.detachEvent( "on" + type, handle );
}
};

jQuery.Event = function( src ) {
@@ -373,6 +373,35 @@ test("bind(), with different this object", function() {
ok( !jQuery.data(jQuery("#firstp")[0], "events"), "Event handler unbound when using different this object and data." );
});

test("bind()/trigger()/unbind() on plain object", function() {
expect( 2 );

var obj = {};

// Make sure it doesn't complain when no events are found
jQuery(obj).trigger("test");

// Make sure it doesn't complain when no events are found
jQuery(obj).unbind("test");

jQuery(obj).bind("test", function(){
ok( true, "Custom event run." );
});

ok( jQuery(obj).data("events"), "Object has events bound." );

// Should trigger 1
jQuery(obj).trigger("test");

jQuery(obj).unbind("test");

// Should trigger 0
jQuery(obj).trigger("test");

// Make sure it doesn't complain when no events are found
jQuery(obj).unbind("test");
});

test("unbind(type)", function() {
expect( 0 );

0 comments on commit 7f5179b

Please sign in to comment.
You can’t perform that action at this time.