Side navigation
#5312 closed bug (invalid)
Opened September 30, 2009 04:29PM UTC
Closed October 01, 2009 12:20AM UTC
Unbind doesn't work if bound using an annoymous function in IE
Reported by: | chrisprice | Owned by: | brandon |
---|---|---|---|
Priority: | major | Milestone: | 1.4 |
Component: | event | Version: | 1.3.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
I'm posting this in case any one else comes across a similar problem, as it appears to be a bug in IE I don't think this is fixable in jQuery.
I would expect the following to run handler1 the first time $thing is clicked and handler2 the second time, handler1 the third time, etc...
$(function() { var $thing = $("body"); $thing.click(function handler1() { alert(1 + handler1 + handler2); $thing.unbind("click", handler1).click(function handler2() { alert(2 + handler1 + handler2); $thing.unbind("click", handler2).click(handler1); }); }); });
I believe this behaviour is due to the following two (non-jQuery) test cases -
var f = function g() { alert(f === g); alert(f == g); }; f();
|| || alert 1 || alert 2 ||
||IE|| false || false ||
||FF|| true || true||
||Chrome|| true || true ||
function a(fn) { alert((fn === fn) + (fn() === fn()) + (fn === fn())); } a(function b() { return b; });
|| || alert ||
||IE|| 2 ||
||FF|| 3 ||
||Chrome|| 3 ||
You'd be better off using .toggle(fn1, fn2) anyway I would think.