aboutsummaryrefslogtreecommitdiffstats
path: root/src/event
diff options
context:
space:
mode:
authorBrandon Aaron <brandon.aaron@gmail.com>2007-04-22 16:34:23 +0000
committerBrandon Aaron <brandon.aaron@gmail.com>2007-04-22 16:34:23 +0000
commit1d2faf36cf356bc09d3389ad6fce6ee520560f25 (patch)
tree33dea3a611b068bd97f31981d9a7d090758ef272 /src/event
parent03d268025966059201fac5d7b6da5c210d22b9f2 (diff)
downloadjquery-1d2faf36cf356bc09d3389ad6fce6ee520560f25.tar.gz
jquery-1d2faf36cf356bc09d3389ad6fce6ee520560f25.zip
Fix an issue with adding multiple event handlers and reattaching the global event handler in IE
Diffstat (limited to 'src/event')
-rw-r--r--src/event/event.js26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/event/event.js b/src/event/event.js
index 61bd4e885..3834fd65f 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;
}
},