X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fevent%2Fevent.js;h=3834fd65f53e21c41971dff4a6621510c12f5cb7;hb=94dfccc6dbb2dbf7b91e01622ff746c9c9f447d6;hp=61bd4e8852e4266ef6cca82e29913c037cea2c66;hpb=e0aa10a664aabbc9ab900a07ea55cb892a7b8d3f;p=jquery.git 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; } },