Make sure that special.add actually copies over event namespaces and data. Fixes...
[jquery.git] / src / event.js
index 9873185..58f7a31 100644 (file)
@@ -71,19 +71,28 @@ jQuery.event = {
                // Handle multiple events separated by a space
                // jQuery(...).bind("mouseover mouseout", fn);
                types = types.split( /\s+/ );
-               var type, i=0;
+
+               var type, i = 0;
+
                while ( (type = types[ i++ ]) ) {
                        // Namespaced event handlers
                        var namespaces = type.split(".");
                        type = namespaces.shift();
+
+                       if ( i > 1 ) {
+                               handler = jQuery.proxy( handler );
+
+                               if ( data !== undefined ) {
+                                       handler.data = data;
+                               }
+                       }
+
                        handler.type = namespaces.slice(0).sort().join(".");
 
                        // Get the current list of functions bound to this event
                        var handlers = events[ type ],
                                special = this.special[ type ] || {};
 
-                       
-
                        // Init the event handler queue
                        if ( !handlers ) {
                                handlers = events[ type ] = {};
@@ -105,6 +114,8 @@ jQuery.event = {
                                var modifiedHandler = special.add.call( elem, handler, data, namespaces, handlers ); 
                                if ( modifiedHandler && jQuery.isFunction( modifiedHandler ) ) { 
                                        modifiedHandler.guid = modifiedHandler.guid || handler.guid; 
+                                       modifiedHandler.data = modifiedHandler.data || handler.data; 
+                                       modifiedHandler.type = modifiedHandler.type || handler.type; 
                                        handler = modifiedHandler; 
                                } 
                        }