Bug Tracker

Opened 5 years ago

Closed 4 years ago

Last modified 4 years ago

#9278 closed bug (wontfix)

unbind is too greedy when unbinding proxy functions

Reported by: sahab.yazdani+jquery@… Owned by: rwaldron
Priority: undecided Milestone: 1.next
Component: event Version: 1.6.1
Keywords: Cc:
Blocked by: Blocking:


Steps to reproduce:

  1. Create two proxies of the same function but using different contexts.
  2. Bind these two proxies unto the same event handler using $().bind
  3. Unbind one of the proxies using the proxied function handle
  4. Trigger the event

Actual Result:

Note that no event gets triggered

Expected Result:

The version of the handler that was not unbound should get triggered.

The JSFiddle will clarify this: http://jsfiddle.net/RD7ZF/7/

As far as I can tell, jQuery has worked like this from the dawn of time, but to me the behviour is rather unexpected. Because the contexts for the proxy functions are different, by extension the two proxy methods are different whereas unbind treats them as being the same.

Change History (4)

comment:1 Changed 5 years ago by rwaldron

  • Component changed from unfiled to event
  • Owner set to rwaldron
  • Status changed from new to assigned


comment:2 Changed 4 years ago by ajpiano

  • Resolution set to wontfix
  • Status changed from assigned to closed

Thanks for your time and interest in helping the jQuery project, but this is by design and we do not intend to change this functionality, as it would greatly increase the complexity of creation and subsequent unbinding of proxied functions.

comment:3 Changed 4 years ago by dmethvin

  • Keywords needsdocs added

This is something worth documenting at least; heavy users of jQuery.proxy may not expect the behavior. However, many jQuery.proxy users will be using delegated events anyway and be less likely to need to unbind perhaps?

comment:4 Changed 4 years ago by dmethvin

  • Keywords needsdocs removed

Added a paragraph to describe this behavior and recommended event namespaces as the solution.

Note: See TracTickets for help on using tickets.