X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fevent.js;h=08deb8b2985e13579a55be98e8097c2f68199576;hb=73ff49ac9a3a6d049557394062e3ad915bb04ef1;hp=405e19f4d0f268075f5164aa067603ff080a858e;hpb=d12e8a34e6d96f98ac4f9408a0d61a9ed373f917;p=jquery.git diff --git a/src/event.js b/src/event.js index 405e19f..08deb8b 100644 --- a/src/event.js +++ b/src/event.js @@ -545,7 +545,7 @@ jQuery.fn.extend({ live: function( type, fn ){ var proxy = jQuery.event.proxy( fn ); - proxy.guid += this.selector; + proxy.guid += this.selector + type; jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy ); @@ -553,22 +553,30 @@ jQuery.fn.extend({ }, die: function( type, fn ){ - jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector } : null ); + jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null ); return this; } }); 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 ( !event.isImmediatePropagationStopped() && + this.fn.call(this.elem, event, this.fn.data) === false ) + stop = false; + }); + return stop; }