Didn't get specific enough with the proxy guid, fixes #3787.

This commit is contained in:
John Resig 2009-01-09 22:14:48 +00:00
parent d12e8a34e6
commit ec7baf230d
2 changed files with 17 additions and 4 deletions

View file

@ -545,7 +545,7 @@ jQuery.fn.extend({
live: function( type, fn ){
var proxy = jQuery.event.proxy( fn );
proxy.guid += this.selector;
proxy.guid += this.selector + type;
jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
@ -553,7 +553,7 @@ jQuery.fn.extend({
},
die: function( type, fn ){
jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector } : null );
jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
return this;
}
});

View file

@ -474,7 +474,7 @@ test("toggle(Function, Function, ...)", function() {
});
test(".live()/.die()", function() {
expect(34);
expect(36);
var submit = 0, div = 0, livea = 0, liveb = 0;
@ -571,10 +571,23 @@ test(".live()/.die()", function() {
equals( called, 3, "Verify that only one click occurred." );
jQuery("#anchor2").trigger("click");
equals( called, 3, "Verify that only one click occurred." );
equals( called, 3, "Verify that no click occurred." );
// Make sure that it still works if the selector is the same,
// but the event type is different
jQuery("#nothiddendiv").live("foo", callback);
// Cleanup
jQuery("#nothiddendiv").die("click", callback);
jQuery("#nothiddendiv").trigger("click");
equals( called, 3, "Verify that no click occurred." );
jQuery("#nothiddendiv").trigger("foo");
equals( called, 4, "Verify that one foo occurred." );
// Cleanup
jQuery("#nothiddendiv").die("foo", callback);
});
/*