Bug Tracker

Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#7651 closed bug (duplicate)

bind() and trigger() fail on plain javascript objects if a method “handle” exists

Reported by: rs@… 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 8 years ago by anonymous

Both variants work fine in jQuery 1.4.2. Test case is at http://www.jsfiddle.net/ZtKLD/

comment:2 Changed 8 years ago by snover

Keywords: regression added
Milestone: 1.next1.5
Priority: undecidedblocker
Status: newopen

comment:3 Changed 8 years ago by snover

Component: unfiledevent

comment:4 Changed 8 years ago by Rick Waldron

Could this possibly be related to #7500 ?

comment:5 in reply to:  4 Changed 8 years ago by jitter

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 8 years ago by Rick Waldron

Resolution: duplicate
Status: openclosed

comment:7 Changed 8 years ago by Rick Waldron

Duplicate of #6968.

Note: See TracTickets for help on using tickets.