Permalink
Browse files

Fix #12203. .undelegate() should not remove direcly bound events.

  • Loading branch information...
dmethvin committed Aug 8, 2012
1 parent 37e8b44 commit 1d8bf0a2b57fd429c600aab5b150b2a04b87e451
Showing with 11 additions and 5 deletions.
  1. +1 −1 src/event.js
  2. +10 −4 test/unit/event.js
@@ -973,7 +973,7 @@ jQuery.fn.extend({
},
undelegate: function( selector, types, fn ) {
// ( namespace ) or ( selector, types [, fn] )
return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
},

trigger: function( type, data ) {
@@ -2376,18 +2376,24 @@ test("stopPropagation() stops directly-bound events on delegated target", functi
});

test("undelegate all bound events", function(){
expect(1);
expect(2);

var count = 0;
var div = jQuery("#body");
var count = 0,
clicks = 0,
div = jQuery("#body");

div.delegate("div#nothiddendivchild", "click submit", function(){ count++; });
div.delegate( "div#nothiddendivchild", "click submit", function(){ count++; } );
div.bind( "click", function(){ clicks++; } );
div.undelegate();

jQuery("div#nothiddendivchild").trigger("click");
jQuery("div#nothiddendivchild").trigger("submit");

equal( count, 0, "Make sure no events were triggered." );

div.trigger("click");
equal( clicks, 2, "Make sure delegated and directly bound event occurred." );
div.unbind("click");
});

test("delegate with multiple events", function(){

0 comments on commit 1d8bf0a

Please sign in to comment.