Bug Tracker

Ticket #3820: 3820.patch

File 3820.patch, 882 bytes (added by iraebrasil, 3 years ago)

patch to make a queue before firing every liveHandler solves #3820

  • src/event.js

     
    560560 
    561561function liveHandler( event ){ 
    562562        var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"), 
    563                 stop = true; 
     563                stop = true, 
     564                queue = []; 
    564565 
    565566        jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){ 
    566567                if ( !event.isImmediatePropagationStopped() && check.test(fn.type) ) { 
    567568                        var elem = jQuery(event.target).closest(fn.data)[0]; 
    568                         if ( elem && fn.call(elem, event, fn.data) === false ) 
    569                                 stop = false; 
     569                        // make a queue to fire events later to avoid bug #3820 
     570                        if ( elem )     queue.push({ 
     571                                elem:elem, 
     572                                fn: fn 
     573                        }); 
    570574                } 
    571575        }); 
     576        jQuery.each(queue, function() { 
     577                if(this['fn'].call(this['elem'], event, this['fn'].data) === false ) 
     578                        stop = false; 
     579        }); 
    572580        return stop; 
    573581} 
    574582