Skip to main content

Bug Tracker

Side navigation

#8596 closed bug (invalid)

Opened March 22, 2011 11:02PM UTC

Closed March 23, 2011 12:06AM UTC

Last modified March 23, 2011 06:45PM UTC

Event $(this).bind conflict with $(this).trigger

Reported by: eswigert@decipherinc.com Owned by:
Priority: undecided Milestone: 1.next
Component: event Version: 1.5.1
Keywords: Cc:
Blocked by: Blocking:
Description

There seems to be a conflict when trying to trigger an event that has the same name as a function in a custom javascript object. Example:

var Class = {

construct: function() {

$("body").bind("click", $.proxy(this, "onBodyClick"));

},

onBodyClick: function(e) {

$(this).trigger("onBodyClick");

}

}

The above code will create a loop and the "onBodyClick" function will run over and over again. Not sure what this has to do with, but I've been creating a pretty decent sized application powered by jquery and this error has caught me a few times.

Attachments (0)
Change History (3)

Changed March 22, 2011 11:23PM UTC by anonymous comment:1

Here is the link to the jsfiddle example.

http://jsfiddle.net/earl3s/zLeYa/

Changed March 23, 2011 12:06AM UTC by rwaldron comment:2

component: unfiledevent
resolution: → invalid
status: newclosed

The problem is not jQuery, but that you have misunderstood how you're passing context with the $.proxy call. When I look at your code and I see the result in the console, that's exactly what I expect to see.

Changed March 23, 2011 06:45PM UTC by eswigert@decipherinc.com comment:3

Really? I can accept that. Could you explain why it's happening that way? I thought I was triggering an event, but it seems like it's actually calling a function with that name (and triggering the event). If it's a scope issue with the proxy can you help me understand what is going on there?

Thanks.