From ec7baf230d3c246dadf00c94115e6668425b9354 Mon Sep 17 00:00:00 2001 From: John Resig Date: Fri, 9 Jan 2009 22:14:48 +0000 Subject: [PATCH] Didn't get specific enough with the proxy guid, fixes #3787. --- src/event.js | 4 ++-- test/unit/event.js | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/event.js b/src/event.js index 405e19f..1ba0357 100644 --- a/src/event.js +++ b/src/event.js @@ -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; } }); diff --git a/test/unit/event.js b/test/unit/event.js index cbeb9ff..e12f3b7 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -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); }); /* -- 1.7.10.4