Bug Tracker

Opened 10 years ago

Closed 10 years ago

#5312 closed bug (invalid)

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 (346 bytes) - added by chrisprice 10 years ago.
The non-jquery test cases

Download all attachments as: .zip

Change History (3)

Changed 10 years ago by chrisprice

Attachment: IE bug.html added

The non-jquery test cases

comment:1 Changed 10 years ago by dmethvin

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

comment:2 Changed 10 years ago by dmethvin

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

Note: See TracTickets for help on using tickets.