From: Anton M Date: Thu, 10 Feb 2011 02:18:11 +0000 (+0100) Subject: Make sure .clone(true) correctly clones namespaced events. Fixes #4537. X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=commitdiff_plain;h=78fc79fad47ce2991c0a7148b65acd7221223eb9 Make sure .clone(true) correctly clones namespaced events. Fixes #4537. --- diff --git a/src/manipulation.js b/src/manipulation.js index 1e4df48..cd0732c 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -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 ); } } } diff --git a/test/unit/event.js b/test/unit/event.js index 21ed631..1d9e2e1 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -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