X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fevent.js;h=fdf61baef005f29daf9d59e1304e472d6b44ff61;hb=a78557472ce1c2cdf7db01a13fcc8591f3fdcfb0;hp=1ba0357d2252760091d6310bcade548de394a9d9;hpb=ec7baf230d3c246dadf00c94115e6668425b9354;p=jquery.git diff --git a/src/event.js b/src/event.js index 1ba0357..fdf61ba 100644 --- a/src/event.js +++ b/src/event.js @@ -377,13 +377,13 @@ jQuery.Event = function( src ){ if( src && src.type ){ this.originalEvent = src; this.type = src.type; - this.timeStamp = src.timeStamp; // Event type }else this.type = src; - if( !this.timeStamp ) - this.timeStamp = now(); + // timeStamp is buggy for some events on Firefox(#3843) + // So we won't rely on the native value + this.timeStamp = now(); // Mark it as fixed this[expando] = true; @@ -560,15 +560,22 @@ jQuery.fn.extend({ function liveHandler( event ){ var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"), - stop = true; + stop = true, + elems = []; jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){ - if ( !event.isImmediatePropagationStopped() && check.test(fn.type) ) { + if ( check.test(fn.type) ) { var elem = jQuery(event.target).closest(fn.data)[0]; - if ( elem && fn.call(elem, event, fn.data) === false ) - stop = false; + if ( elem ) + elems.push({ elem: elem, fn: fn }); } }); + + jQuery.each(elems, function(){ + if ( this.fn.call(this.elem, event, this.fn.data) === false ) + stop = false; + }); + return stop; } @@ -630,7 +637,7 @@ function bindReady(){ // If IE and not an iframe // continually check to see if the document is ready - if ( document.documentElement.doScroll && !window.frameElement ) (function(){ + if ( document.documentElement.doScroll && typeof window.frameElement === "undefined" ) (function(){ if ( jQuery.isReady ) return; try {