X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fevent.js;h=7c718f48a49b03daa2b109449c9ca04156597f05;hb=66fbbec3bb2d0555da55eea4abae0081484d37b4;hp=cb0b6c29b47638b4bf28afa90196576f0b7cd570;hpb=ee52c89dc956dc04d827d70440a089fd0cf94a46;p=jquery.git diff --git a/src/event.js b/src/event.js index cb0b6c2..7c718f4 100644 --- a/src/event.js +++ b/src/event.js @@ -19,7 +19,7 @@ jQuery.event = { // if data is passed, bind to handler if( data != undefined ) { - // Create temporary function pointer to original handler + // Create temporary function pointer to original handler var fn = handler; // Create unique handler function, wrapped around original handler @@ -171,8 +171,13 @@ jQuery.event = { data.shift(); // Handle triggering of extra function - if ( extra && extra.apply( element, data ) === false ) - val = false; + if ( extra ) { + // call the extra function and tack the current return value on the end for possible inspection + var ret = extra.apply( element, data.concat( val ) ); + // if anything is returned, give it precedence and have it overwrite the previous value + if (ret !== undefined) + val = ret; + } // Trigger the native events (except for clicks on links) if ( fn && donative !== false && val !== false && !(jQuery.nodeName(element, 'a') && type == "click") ) { @@ -253,11 +258,11 @@ jQuery.event = { }; // Fix target property, if necessary - if ( !event.target && event.srcElement ) - event.target = event.srcElement; + if ( !event.target ) + event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either // check if target is a textnode (safari) - if (jQuery.browser.safari && event.target.nodeType == 3) + if ( event.target.nodeType == 3 ) event.target = originalEvent.target.parentNode; // Add relatedTarget, if necessary @@ -333,7 +338,7 @@ jQuery.fn.extend({ event.preventDefault(); // and execute the function - return args[this.lastToggle].apply( this, [event] ) || false; + return args[this.lastToggle].apply( this, arguments ) || false; }); }, @@ -348,7 +353,8 @@ jQuery.fn.extend({ while ( parent && parent != this ) try { parent = parent.parentNode; } catch(error) { parent = this; }; // If we actually just moused on to a sub-element, ignore it - if ( parent == this ) return false; + if ( parent == this ) + return true; // Execute the right function return (event.type == "mouseover" ? fnOver : fnOut).apply(this, [event]); @@ -401,7 +407,7 @@ jQuery.extend({ jQuery.readyList = null; } // Remove event listener to avoid memory leak - if ( jQuery.browser.mozilla || jQuery.browser.opera ) + if ( document.removeEventListener ) document.removeEventListener( "DOMContentLoaded", jQuery.ready, false ); } } @@ -424,14 +430,14 @@ function bindReady(){ if ( readyBound ) return; readyBound = true; - // If Mozilla is used - if ( jQuery.browser.mozilla || jQuery.browser.opera ) + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) // Use the handy event callback document.addEventListener( "DOMContentLoaded", jQuery.ready, false ); // If Safari or IE is used // Continually check to see if the document is ready - else (function(){ + if (jQuery.browser.msie || jQuery.browser.safari ) (function(){ try { // If IE is used, use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ @@ -453,5 +459,5 @@ function bindReady(){ // And prevent errors on refresh with events like mouseover // Window isn't included so as not to unbind existing unload events jQuery(window).bind("unload", function() { - $("*").add(document).unbind(); + jQuery("*").add(document).unbind(); });