Added support for .unbind(".test") to unbind all namespaced events on an element.
authorJohn Resig <jeresig@gmail.com>
Sun, 3 Feb 2008 04:33:11 +0000 (04:33 +0000)
committerJohn Resig <jeresig@gmail.com>
Sun, 3 Feb 2008 04:33:11 +0000 (04:33 +0000)
src/event.js
test/unit/event.js

index 56da7ac..9f384fb 100644 (file)
@@ -109,9 +109,9 @@ jQuery.event = {
 
                if ( events ) {
                        // Unbind all events for the element
-                       if ( types == undefined )
+                       if ( types == undefined || types[0] == "." )
                                for ( var type in events )
-                                       this.remove( elem, type );
+                                       this.remove( elem, type + (types || "") );
                        else {
                                // types is actually an event object here
                                if ( types.type ) {
index da6dd79..ba29ab7 100644 (file)
@@ -72,6 +72,10 @@ test("bind(), trigger change on select", function() {
 test("bind(), namespaced events, cloned events", function() {
        expect(6);
 
+       $("#firstp").bind("custom.test",function(e){
+               ok(true, "Custom event triggered");
+       });
+
        $("#firstp").bind("click",function(e){
                ok(true, "Normal click triggered");
        });
@@ -92,6 +96,12 @@ test("bind(), namespaced events, cloned events", function() {
        // Trigger the remaining fn (1)
        $("#firstp").trigger("click");
 
+       // Remove the remaining fn
+       $("#firstp").unbind(".test");
+
+       // Trigger the remaining fn (0)
+       $("#firstp").trigger("custom");
+
        // using contents will get comments regular, text, and comment nodes
        $("#nonnodes").contents().bind("tester", function () {
                equals(this.nodeType, 1, "Check node,textnode,comment bind just does real nodes" );