Skip to content
Permalink
Browse files

Make sure that special.add actually copies over event namespaces and …

…data. Fixes #5779 and #5834.
  • Loading branch information
jeresig committed Jan 25, 2010
1 parent 0474917 commit 390186b902c4c1ac13e23754d33ed4d8b3d5fa38
Showing with 43 additions and 0 deletions.
  1. +2 −0 src/event.js
  2. +41 −0 test/unit/event.js
@@ -114,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;
}
}
@@ -71,6 +71,47 @@ test("bind(), multiple events at once and namespaces", function() {
div.trigger("focusout.b");
});

test("bind(), namespace with special add", function() {
expect(9);

var div = jQuery("<div/>").bind("test", function(e) {
ok( true, "Test event fired." );
});

var i = 0;

jQuery.event.special.test = {
setup: function(){},
teardown: function(){},
add: function( handler, data, namespaces ) {
return function(e) {
e.xyz = ++i;
handler.apply( this, arguments );
};
},
remove: function() {}
};

div.bind("test.a", {x: 1}, function(e) {
ok( !!e.xyz, "Make sure that the data is getting passed through." );
equals( e.data.x, 1, "Make sure data is attached properly." );
});

div.bind("test.b", {x: 2}, function(e) {
ok( !!e.xyz, "Make sure that the data is getting passed through." );
equals( e.data.x, 2, "Make sure data is attached properly." );
});

// Should trigger 5
div.trigger("test");

// Should trigger 2
div.trigger("test.a");

// Should trigger 2
div.trigger("test.b");
});

test("bind(), no data", function() {
expect(1);
var handler = function(event) {

1 comment on commit 390186b

@jeresig

This comment has been minimized.

Copy link
Member Author

jeresig commented on 390186b Jan 25, 2010

Oh - and thanks to Ben Alman for the original test case, which was cribbed to build the tests here.

Please sign in to comment.
You can’t perform that action at this time.