Fixed #1970 by returning true instead of false when the mouse moves over a sub-elemen...
[jquery.git] / src / event.js
index cb0b6c2..6475cd9 100644 (file)
@@ -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 
@@ -253,11 +253,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
@@ -348,7 +348,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 +402,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 +425,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 +454,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();
 });