Fix patch for #7150, which was not deleting the events object properly on plain JS objects. Thanks to jitter for catching it.

This commit is contained in:
Colin Snover 2010-10-12 18:49:37 -05:00
parent ff6ceadbfd
commit 1518ae1aed
2 changed files with 6 additions and 3 deletions

View file

@ -282,11 +282,11 @@ jQuery.event = {
handle.elem = null; handle.elem = null;
} }
delete elemData[ eventKey ]; delete elemData.events;
delete elemData.handle; delete elemData.handle;
if ( typeof elemData === "function" ) { if ( typeof elemData === "function" ) {
jQuery.removeData( elem, "events" ); jQuery.removeData( elem, eventKey );
} else if ( jQuery.isEmptyObject( elemData ) ) { } else if ( jQuery.isEmptyObject( elemData ) ) {
jQuery.removeData( elem ); jQuery.removeData( elem );

View file

@ -443,7 +443,7 @@ test("bind(name, false), unbind(name, false)", function() {
}); });
test("bind()/trigger()/unbind() on plain object", function() { test("bind()/trigger()/unbind() on plain object", function() {
expect( 5 ); expect( 7 );
var obj = {}; var obj = {};
@ -459,6 +459,7 @@ test("bind()/trigger()/unbind() on plain object", function() {
var events = jQuery(obj).data("__events__"); var events = jQuery(obj).data("__events__");
ok( events, "Object has events bound." ); ok( events, "Object has events bound." );
equals( obj.events, undefined, "Events object on plain objects is not events" );
equals( typeof events, "function", "'events' expando is a function on plain objects." ); equals( typeof events, "function", "'events' expando is a function on plain objects." );
equals( obj.test, undefined, "Make sure that test event is not on the plain object." ); equals( obj.test, undefined, "Make sure that test event is not on the plain object." );
equals( obj.handle, undefined, "Make sure that the event handler is not on the plain object." ); equals( obj.handle, undefined, "Make sure that the event handler is not on the plain object." );
@ -473,6 +474,8 @@ test("bind()/trigger()/unbind() on plain object", function() {
// Make sure it doesn't complain when no events are found // Make sure it doesn't complain when no events are found
jQuery(obj).unbind("test"); jQuery(obj).unbind("test");
equals( obj.__events__, undefined, "Make sure events object is removed" );
}); });
test("unbind(type)", function() { test("unbind(type)", function() {