From 1d2faf36cf356bc09d3389ad6fce6ee520560f25 Mon Sep 17 00:00:00 2001
From: Brandon Aaron <brandon.aaron@gmail.com>
Date: Sun, 22 Apr 2007 16:34:23 +0000
Subject: [PATCH] Fix an issue with adding multiple event handlers and
 reattaching the global event handler in IE

---
 src/event/event.js |   26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/event/event.js b/src/event/event.js
index 61bd4e8..3834fd6 100644
--- a/src/event/event.js
+++ b/src/event/event.js
@@ -38,22 +38,19 @@ jQuery.event = {
 		// Init the element's event structure
 		if (!element.$events)
 			element.$events = {};
-
-		// Get the current list of functions bound to this event
-		var handlers = element.$events[type];
-
-		// Init the event handler queue
-		if (!handlers)
-			handlers = element.$events[type] = {};
-
-		// Add the function to the element's handler list
-		handlers[handler.guid] = handler;
 		
-		if (!element.$handle) {
+		if (!element.$handle)
 			element.$handle = function() {
 				jQuery.event.handle.apply(element, arguments);
 			};
 
+		// Get the current list of functions bound to this event
+		var handlers = element.$events[type];
+
+		// Init the event handler queue
+		if (!handlers) {
+			handlers = element.$events[type] = {};	
+			
 			// And bind the global event handler to the element
 			if (element.addEventListener)
 				element.addEventListener(type, element.$handle, false);
@@ -61,6 +58,9 @@ jQuery.event = {
 				element.attachEvent("on" + type, element.$handle, false);
 		}
 
+		// Add the function to the element's handler list
+		handlers[handler.guid] = handler;
+
 		// Remember the function in a global list (for triggering)
 		if (!this.global[type])
 			this.global[type] = [];
@@ -102,7 +102,7 @@ jQuery.event = {
 						element.removeEventListener(type, element.$handle, false);
 					else if (element.detachEvent)
 						element.detachEvent("on" + type, element.$handle, false);
-					ret = element.$handle = null;
+					ret = null;
 					delete events[type];
 				}
 			}
@@ -110,7 +110,7 @@ jQuery.event = {
 			// Remove the expando if it's no longer used
 			for ( ret in events ) break;
 			if ( !ret )
-				element.$events = null;
+				element.$handle = element.$events = null;
 		}
 	},
 
-- 
1.7.10.4