Ticket #2889: eachBound.diff
| File eachBound.diff, 2.0 kB (added by flesler, 8 months ago) |
|---|
-
src/core.js
743 743 744 744 return object; 745 745 }, 746 746 747 // internal, node is the root 748 eachBound: function ( node, fn ){ 749 var nodes = node.getElementsByTagName('*'), 750 index = nodes.length, 751 events; 752 753 // add the root node itself 754 nodes[ index ] = node; 755 756 do{ 757 node = nodes[ index ]; 758 if( node && node.nodeType == 1 && node[ expando ] && ( events = $.data(node, 'events') ) ) 759 fn.call( node, events ); 760 761 }while( index-- ); 762 }, 763 747 764 prop: function( elem, value, type, i, name ) { 748 765 // Handle executable functions 749 766 if ( jQuery.isFunction( value ) ) … … 1303 1320 remove: function( selector ) { 1304 1321 if ( !selector || jQuery.filter( selector, [ this ] ).r.length ) { 1305 1322 // Prevent memory leaks 1306 jQuery ( "*", this ).add(this).each(function(){1323 jQuery.eachBound( this, function(){ 1307 1324 jQuery.event.remove(this); 1308 1325 jQuery.removeData(this); 1309 1326 }); -
src/event.js
167 167 // Handle a global trigger 168 168 if ( !elem ) { 169 169 // Only trigger if we've ever bound an event for it 170 if ( this.global[type] ) 171 jQuery("*").add([window, document]).trigger(type, data); 170 if ( this.global[type] ){ 171 jQuery.eachBound( document, function( events ){ 172 if( events[type] ) 173 jQuery.event.trigger( type, data, this, true ); 174 }); 175 jQuery.event.trigger( type, data, window, true ); 176 } 172 177 173 178 // Handle triggering a single element 174 179 } else { … … 597 602 // And prevent errors on refresh with events like mouseover in other browsers 598 603 // Window isn't included so as not to unbind existing unload events 599 604 jQuery(window).bind("unload", function() { 600 jQuery("*").add(document).unbind(); 605 jQuery.eachBound( document, function(){ 606 jQuery.event.remove(this); 607 }); 601 608 });
