Added support for .unbind(".test") to unbind all namespaced events on an element.

This commit is contained in:
John Resig 2008-02-03 04:33:11 +00:00
parent 77da94552e
commit 703e89ba30
2 changed files with 12 additions and 2 deletions

View 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 ) {

View 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" );