aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2010-02-11 01:42:51 -0500
committerJohn Resig <jeresig@gmail.com>2010-02-11 01:42:51 -0500
commit021b809acecc4e94613375b3182c86722470fe9b (patch)
tree77b70e014be92b036401945d08cf35aeec3eeee1
parent639f4931b0409a8eb83aaf89a03b6b52f674663e (diff)
downloadjquery-021b809acecc4e94613375b3182c86722470fe9b.tar.gz
jquery-021b809acecc4e94613375b3182c86722470fe9b.zip
Make sure that the teardown is called after all the handlers of a type are removed. Fixes #6065.
-rw-r--r--src/event.js2
-rw-r--r--test/unit/event.js8
2 files changed, 7 insertions, 3 deletions
diff --git a/src/event.js b/src/event.js
index 2e510eabf..e15a2ea63 100644
--- a/src/event.js
+++ b/src/event.js
@@ -221,7 +221,7 @@ jQuery.event = {
}
// remove generic event handler if no more handlers exist
- if ( jQuery.isEmptyObject( events[ type ] ) ) {
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
removeEvent( elem, type, elemData.handle );
}
diff --git a/test/unit/event.js b/test/unit/event.js
index e85c4bd9d..33329c311 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -72,7 +72,7 @@ test("bind(), multiple events at once and namespaces", function() {
});
test("bind(), namespace with special add", function() {
- expect(18);
+ expect(19);
var div = jQuery("<div/>").bind("test", function(e) {
ok( true, "Test event fired." );
@@ -87,7 +87,9 @@ test("bind(), namespace with special add", function() {
equals( e.target, div[0], "And that the target is correct." );
},
setup: function(){},
- teardown: function(){},
+ teardown: function(){
+ ok(true, "Teardown called.");
+ },
add: function( handleObj ) {
var handler = handleObj.handler;
handleObj.handler = function(e) {
@@ -116,6 +118,8 @@ test("bind(), namespace with special add", function() {
// Should trigger 2
div.trigger("test.b");
+
+ div.unbind("test");
});
test("bind(), no data", function() {