Make sure .clone(true) correctly clones namespaced events. Fixes #4537.
authorAnton M <obhvsbypqghgc@gmail.com>
Thu, 10 Feb 2011 02:18:11 +0000 (03:18 +0100)
committerAnton M <obhvsbypqghgc@gmail.com>
Thu, 10 Feb 2011 21:20:48 +0000 (22:20 +0100)
src/manipulation.js
test/unit/event.js

index 1e4df48..cd0732c 100644 (file)
@@ -368,7 +368,7 @@ function cloneCopyEvent( src, dest ) {
 
                        for ( var type in events ) {
                                for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
-                                       jQuery.event.add( dest, type, events[ type ][ i ], events[ type ][ i ].data );
+                                       jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
                                }
                        }
                }
index 21ed631..1d9e2e1 100644 (file)
@@ -361,9 +361,7 @@ test("bind(), trigger change on select", function() {
        }).trigger('change');
 });
 
-test("bind(), namespaced events, cloned events", function() {
-       expect(6);
-
+test("bind(), namespaced events, cloned events", 18, function() {
        var firstp = jQuery( "#firstp" );
 
        firstp.bind("custom.test",function(e){
@@ -372,22 +370,31 @@ test("bind(), namespaced events, cloned events", function() {
 
        firstp.bind("click",function(e){
                ok(true, "Normal click triggered");
+               equal( e.type + e.namespace, "click", "Check that only click events trigger this fn" );
        });
 
        firstp.bind("click.test",function(e){
+               var check = "click";
                ok( true, "Namespaced click triggered" );
+               if ( e.namespace ) {
+                       check += "test";
+               }
+               equal( e.type + e.namespace, check, "Check that only click/click.test events trigger this fn" );
        });
 
-       // Trigger both bound fn (2)
+       //clone(true) element to verify events are cloned correctly
+       firstp = firstp.add( firstp.clone( true ).attr( "id", "firstp2" ).insertBefore( firstp ) );
+
+       // Trigger both bound fn (8)
        firstp.trigger("click");
 
-       // Trigger one bound fn (1)
+       // Trigger one bound fn (4)
        firstp.trigger("click.test");
 
        // Remove only the one fn
        firstp.unbind("click.test");
 
-       // Trigger the remaining fn (1)
+       // Trigger the remaining fn (4)
        firstp.trigger("click");
 
        // Remove the remaining namespaced fn