#7651 closed bug (duplicate)
bind() and trigger() fail on plain javascript objects if a method “handle” exists
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | blocker | Milestone: | 1.5 |
Component: | event | Version: | 1.4.4 |
Keywords: | regression | Cc: | |
Blocked by: | Blocking: |
Description
This is a regression from the changes made in 1.4.3. The following works fine:
var a = {}; jQuery(a).bind("myEvent", function() { jQuery('body').text("Gaga"); }); jQuery(a).trigger('myEvent');
Whereas this does not work:
var a = {}; a.handle = function(){}; jQuery(a).bind("myEvent", function() { jQuery('body').text("Gaga"); }); jQuery(a).trigger('myEvent');
Change History (7)
comment:1 Changed 13 years ago by
comment:2 Changed 13 years ago by
Keywords: | regression added |
---|---|
Milestone: | 1.next → 1.5 |
Priority: | undecided → blocker |
Status: | new → open |
comment:3 Changed 13 years ago by
Component: | unfiled → event |
---|
comment:5 Changed 13 years ago by
Replying to rwaldron:
Could this possibly be related to #7500 ?
I don't think so. This probably comes from the changes in 1.4.3 to the data()
method, as we now are storing the data()
data on plain js objects directly.
Now the events add()
method seem to get confused here and here as elemData.handle
is now set when there is a "handle" property on the js object. Which of course it wasn't in 1.4.2 where data()
returned nothing on a plain js object unless there was already data associated with it in the internal cache. But in 1.4.2 a similar bug existed the other way around
http://jsfiddle.net/jitter/zPz7j/
So the main issue is we really shouldn't be storing a property named handle
directly on a js object.
comment:6 Changed 12 years ago by
Resolution: | → duplicate |
---|---|
Status: | open → closed |
Both variants work fine in jQuery 1.4.2. Test case is at http://www.jsfiddle.net/ZtKLD/