aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrandon Aaron <brandon.aaron@gmail.com>2007-04-24 22:35:04 +0000
committerBrandon Aaron <brandon.aaron@gmail.com>2007-04-24 22:35:04 +0000
commit2897b1bd2383031b6764192dc1ccb1d1205139a3 (patch)
treeb76f19310feb30fe95b7bdf903337615f8a44767 /src
parent14aafdf3191ca5da0dbd3c3fa3856dcc5a52c7be (diff)
downloadjquery-2897b1bd2383031b6764192dc1ccb1d1205139a3.tar.gz
jquery-2897b1bd2383031b6764192dc1ccb1d1205139a3.zip
unbind handlers with data + test (#935)
Diffstat (limited to 'src')
-rw-r--r--src/event/event.js5
-rw-r--r--src/event/eventTest.js12
2 files changed, 12 insertions, 5 deletions
diff --git a/src/event/event.js b/src/event/event.js
index 9b5feb152..a3db2f3ab 100644
--- a/src/event/event.js
+++ b/src/event/event.js
@@ -32,8 +32,11 @@ jQuery.event = {
}
// Make sure that the function being executed has a unique ID
- if ( !handler.guid )
+ if ( !handler.guid ) {
handler.guid = this.guid++;
+ // Don't forget to set guid for the original handler function
+ if (fn) fn.guid = handler.guid;
+ }
// Init the element's event structure
if (!element.$events)
diff --git a/src/event/eventTest.js b/src/event/eventTest.js
index 8d8321618..15e66313e 100644
--- a/src/event/eventTest.js
+++ b/src/event/eventTest.js
@@ -1,13 +1,15 @@
module("event");
test("bind()", function() {
- expect(11);
+ expect(12);
var handler = function(event) {
ok( event.data, "bind() with data, check passed data exists" );
ok( event.data.foo == "bar", "bind() with data, Check value of passed data" );
};
- $("#firstp").bind("click", {foo: "bar"}, handler).click();
+ $("#firstp").bind("click", {foo: "bar"}, handler).click().unbind("click", handler);
+
+ ok( !$("#firstp").get(0).$events, "Event handler unbound when using data." );
reset();
var handler = function(event, data) {
@@ -16,12 +18,14 @@ test("bind()", function() {
ok( data, "Check trigger data" );
ok( data.bar == "foo", "Check value of trigger data" );
};
- $("#firstp").bind("click", {foo: "bar"}, handler).trigger("click", [{bar: "foo"}]);
+ $("#firstp").bind("click", {foo: "bar"}, handler).trigger("click", [{bar: "foo"}]).unbind(handler);
+ reset();
var handler = function(event) {
ok ( !event.data, "Check that no data is added to the event object" );
};
- $("#firstp").unbind().bind("click", handler).trigger("click");
+ $("#firstp").bind("click", handler).trigger("click");
+
// events don't work with iframes, see #939
var tmp = document.createElement('iframe');