Commit 1d8bf0a2 authored by Dave Methvin's avatar Dave Methvin

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

parent 37e8b448
......@@ -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(){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment