Commit 78fc79fa authored by Anton M's avatar Anton M

Make sure .clone(true) correctly clones namespaced events. Fixes #4537.

parent 4490f428
...@@ -368,7 +368,7 @@ function cloneCopyEvent( src, dest ) { ...@@ -368,7 +368,7 @@ function cloneCopyEvent( src, dest ) {
for ( var type in events ) { for ( var type in events ) {
for ( var i = 0, l = events[ type ].length; i < l; i++ ) { 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 );
} }
} }
} }
......
...@@ -361,9 +361,7 @@ test("bind(), trigger change on select", function() { ...@@ -361,9 +361,7 @@ test("bind(), trigger change on select", function() {
}).trigger('change'); }).trigger('change');
}); });
test("bind(), namespaced events, cloned events", function() { test("bind(), namespaced events, cloned events", 18, function() {
expect(6);
var firstp = jQuery( "#firstp" ); var firstp = jQuery( "#firstp" );
firstp.bind("custom.test",function(e){ firstp.bind("custom.test",function(e){
...@@ -372,22 +370,31 @@ test("bind(), namespaced events, cloned events", function() { ...@@ -372,22 +370,31 @@ test("bind(), namespaced events, cloned events", function() {
firstp.bind("click",function(e){ firstp.bind("click",function(e){
ok(true, "Normal click triggered"); 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){ firstp.bind("click.test",function(e){
var check = "click";
ok( true, "Namespaced click triggered" ); 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"); firstp.trigger("click");
// Trigger one bound fn (1) // Trigger one bound fn (4)
firstp.trigger("click.test"); firstp.trigger("click.test");
// Remove only the one fn // Remove only the one fn
firstp.unbind("click.test"); firstp.unbind("click.test");
// Trigger the remaining fn (1) // Trigger the remaining fn (4)
firstp.trigger("click"); firstp.trigger("click");
// Remove the remaining namespaced fn // Remove the remaining namespaced fn
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment