From 1df5084c9748a8d38516266063344f145bc428c0 Mon Sep 17 00:00:00 2001 From: John Resig Date: Mon, 11 Oct 2010 18:20:57 -0400 Subject: [PATCH] Handle some edge cases with binding events to the window object (which is also a plain object - causing some confusion). Fixes #7143. --- src/event.js | 4 ++-- test/unit/event.js | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/event.js b/src/event.js index 7a10a12..d949d0f 100644 --- a/src/event.js +++ b/src/event.js @@ -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 ); diff --git a/test/unit/event.js b/test/unit/event.js index d9dcc97..b093e8e 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -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." ); }); /* -- 1.7.10.4