Skip to main content

Bug Tracker

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 ||

Attachments (1)
  • IE bug.html (0.3 KB) - added by chrisprice September 30, 2009 04:29PM UTC.

    The non-jquery test cases

Change History (2)

Changed October 01, 2009 12:18AM UTC by dmethvin comment:1

You'd be better off using .toggle(fn1, fn2) anyway I would think.

Changed October 01, 2009 12:20AM UTC by dmethvin comment:2

resolution: → invalid
status: newclosed

Actually, since this isn't a jQuery bug I'll close it. If we had a bug for every strange thing IE does...