aboutsummaryrefslogtreecommitdiffstats
path: root/src/event/event.js
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-08-19 23:37:26 +0000
committerJohn Resig <jeresig@gmail.com>2007-08-19 23:37:26 +0000
commit2ef4093cf7f52383dd43bd361864edcda27e5c3c (patch)
tree13ff931a06c6d508829377cb809e497ffaa8ab19 /src/event/event.js
parent24db022ba06523f92e94ac5fa791fc4865b55ba7 (diff)
downloadjquery-2ef4093cf7f52383dd43bd361864edcda27e5c3c.tar.gz
jquery-2ef4093cf7f52383dd43bd361864edcda27e5c3c.zip
Complete overhaul of the Ajax test suite, it's now passing in all browsers. In order to achieve this I had to fix a numbe
r of bugs in the suite itself, along with other random bugs that popped up. The following bugs were resolved along the wa y: #1236 (.extend() keeps processing when it hits nulls), #1028 (.extend() now works recursively), #1080 ($.get no longer overwrites the data parameter), #1210 (Creating script and link tags now work), and #1463 (jQuery.global has been re-too led to no longer leak memory and slow things down).
Diffstat (limited to 'src/event/event.js')
-rw-r--r--src/event/event.js35
1 files changed, 7 insertions, 28 deletions
diff --git a/src/event/event.js b/src/event/event.js
index 1b24a31e7..bb5f9d273 100644
--- a/src/event/event.js
+++ b/src/event/event.js
@@ -71,12 +71,8 @@ jQuery.event = {
// 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] = [];
- // Only add the element to the global list once
- if (jQuery.inArray(element, this.global[type]) == -1)
- this.global[type].push( element );
+ // Keep track of which events have been used, for global triggering
+ this.global[type] = true;
},
guid: 1,
@@ -116,10 +112,6 @@ jQuery.event = {
element.detachEvent("on" + type, element.$handle);
ret = null;
delete events[type];
-
- // Remove element from the global event type cache
- while ( this.global[type] && ( (index = jQuery.inArray(element, this.global[type])) >= 0 ) )
- delete this.global[type][index];
}
}
@@ -135,13 +127,13 @@ jQuery.event = {
data = jQuery.makeArray(data || []);
// Handle a global trigger
- if ( !element )
- jQuery.each( this.global[type] || [], function(){
- jQuery.event.trigger( type, data, this );
- });
+ if ( !element ) {
+ // Only trigger if we've ever bound an event for it
+ if ( this.global[type] )
+ jQuery("*").trigger(type, data);
// Handle triggering a single element
- else {
+ } else {
var val, ret, fn = jQuery.isFunction( element[ type ] || null );
// Pass along a fake event
@@ -986,16 +978,3 @@ new function(){
jQuery.event.add( window, "load", jQuery.ready );
};
-
-// Clean up after IE to avoid memory leaks
-if (jQuery.browser.msie)
- jQuery(window).one("unload", function() {
- var global = jQuery.event.global;
- for ( var type in global ) {
- var els = global[type], i = els.length;
- if ( i && type != 'unload' )
- do
- els[i-1] && jQuery.event.remove(els[i-1], type);
- while (--i);
- }
- });