Bug Tracker

Ticket #1731: 1731.diff

File 1731.diff, 1.2 KB (added by brandon, 15 years ago)

Patch

  • src/event.js

     
    4343                // Init the element's event structure
    4444                var events = jQuery.data(element, "events") || jQuery.data(element, "events", {});
    4545               
    46                 var handle = jQuery.data(element, "handle", function(){
     46                var handle = jQuery.data(element, "handle") || jQuery.data(element, "handle", function(){
    4747                        // returned undefined or false
    4848                        var val;
    4949
     
    6969                                element.addEventListener(type, handle, false);
    7070                        else
    7171                                element.attachEvent("on" + type, handle);
     72                       
     73                        // Add element to the event cache
     74                        this.cache.push(element);
    7275                }
    7376
    7477                // Add the function to the element's handler list
     
    8083
    8184        guid: 1,
    8285        global: {},
     86        cache: [],
    8387
    8488        // Detach an event or set of events from an element
    8589        remove: function(element, type, handler) {
     
    448452        // A fallback to window.onload, that will always work
    449453        jQuery.event.add( window, "load", jQuery.ready );
    450454}
     455
     456
     457// Remove events on window unload for IE to prevent memory leaks
     458if ( jQuery.browser.msie )
     459        jQuery(window).unload( function() {
     460                jQuery( jQuery.event.cache ).unbind();
     461        });