Handle some edge cases with binding events to the window object (which is also a plain object - causing some confusion). Fixes #7143.

This commit is contained in:
John Resig 2010-10-11 18:20:57 -04:00
parent c00a6ff1f1
commit 1df5084c97
2 changed files with 7 additions and 3 deletions

View file

@ -282,7 +282,7 @@ jQuery.event = {
delete elemData.handle;
if ( typeof elemData === "function" ) {
delete elem.events;
jQuery.removeData( elem, "events" );
} else if ( jQuery.isEmptyObject( elemData ) ) {
jQuery.removeData( elem );
@ -346,7 +346,7 @@ jQuery.event = {
// Trigger the event, it is assumed that "handle" is a function
var handle = elem.nodeType ?
jQuery.data( elem, "handle" ) :
elem.events && elem.events.handle;
(jQuery.data( elem, "events" ) || {}).handle;
if ( handle ) {
handle.apply( elem, data );

View file

@ -1830,11 +1830,15 @@ test("Non DOM element events", function() {
});
test("window resize", function() {
expect(1);
expect(2);
jQuery(window).unbind();
jQuery(window).bind("resize", function(){
ok( true, "Resize event fired." );
}).resize().unbind("resize");
ok( !jQuery(window).data("events"), "Make sure all the events are gone." );
});
/*