From 0ae7198b9e1614be54eecb5bb0272094996397d9 Mon Sep 17 00:00:00 2001 From: John Resig Date: Tue, 2 Jan 2007 16:43:05 +0000 Subject: [PATCH] Cleaned up a bunch of the event code, removed .oneEvent() and .unEvent(). --- src/event/event.js | 65 +++++++++++++++++++++------------------------------- 1 file changed, 26 insertions(+), 39 deletions(-) diff --git a/src/event/event.js b/src/event/event.js index 2ceaa93..d2609cc 100644 --- a/src/event/event.js +++ b/src/event/event.js @@ -93,7 +93,8 @@ jQuery.event = { handle: function(event) { if ( typeof jQuery == "undefined" ) return false; - event = jQuery.event.fix( event || window.event || {} ); // Empty object is for triggered events with no data + // Empty object is for triggered events with no data + event = jQuery.event.fix( event || window.event || {} ); // returned undefined or false var returnValue; @@ -136,14 +137,16 @@ jQuery.event = { // check if target is a textnode (safari) if (event.target.nodeType == 3) { - // store a copy of the original event object and clone because target is read only + // store a copy of the original event object + // and clone because target is read only var originalEvent = event; event = jQuery.extend({}, originalEvent); // get parentnode from textnode event.target = originalEvent.target.parentNode; - // add preventDefault and stopPropagation since they will not work on the clone + // add preventDefault and stopPropagation since + // they will not work on the clone event.preventDefault = function() { return originalEvent.preventDefault(); }; @@ -153,17 +156,15 @@ jQuery.event = { } // fix preventDefault and stopPropagation - if (!event.preventDefault) { + if (!event.preventDefault) event.preventDefault = function() { this.returnValue = false; }; - } - if (!event.stopPropagation) { + if (!event.stopPropagation) event.stopPropagation = function() { this.cancelBubble = true; }; - } return event; } @@ -1031,36 +1032,17 @@ new function(){ jQuery.fn[o] = function(f){ return f ? this.bind(o, f) : this.trigger(o); }; - - // Handle event unbinding - // TODO remove - jQuery.fn["un"+o] = function(f){ return this.unbind(o, f); }; - - // Finally, handle events that only fire once - // TODO remove - jQuery.fn["one"+o] = function(f){ - // save cloned reference to this - var element = jQuery(this); - var handler = function() { - // unbind itself when executed - element.unbind(o, handler); - element = null; - // apply original handler with the same arguments - return f.apply(this, arguments); - }; - return this.bind(o, handler); - }; }; // If Mozilla is used - if ( jQuery.browser.mozilla || jQuery.browser.opera ) { + if ( jQuery.browser.mozilla || jQuery.browser.opera ) // Use the handy event callback document.addEventListener( "DOMContentLoaded", jQuery.ready, false ); // If IE is used, use the excellent hack by Matthias Miller // http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited - } else if ( jQuery.browser.msie ) { + else if ( jQuery.browser.msie ) { // Only works if you document.write() it document.write("0) do if (type != 'unload') event.remove(els[i-1], type); while (--i); - } -}); +if (jQuery.browser.msie) + jQuery(window).bind("unload", function() { + var global = jQuery.event.global; + for ( var type in global ) { + var els = global[type], i = els.length; + if ( i && type != 'unload' ) + do + jQuery.event.remove(els[i-1], type); + while (--i); + } + }); \ No newline at end of file -- 1.7.10.4