mirror of
https://github.com/jquery/jquery.git
synced 2024-10-05 11:34:18 +00:00
Fix #12203. .undelegate() should not remove direcly bound events.
This commit is contained in:
parent
37e8b44884
commit
1d8bf0a2b5
@ -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(){
|
||||
|
Loading…
Reference in New Issue
Block a user