Skip to main content

Bug Tracker

Side navigation

#5595 closed bug (worksforme)

Opened December 04, 2009 05:10PM UTC

Closed December 10, 2009 06:01AM UTC

Live Event Binds Ignore Context

Reported by: chrismjohnson Owned by: brandon
Priority: minor Milestone: 1.4
Component: event Version: 1.3.2
Keywords: Cc:
Blocked by: Blocking:
Description

Using the live event bind (.live) on a jQuery collection resulting from a .find, the event is bound to the selector of the .find with no regard for the parent collection of the .find.

The livequery plugin appears to respect the context properly.

Examples attached.

Attachments (1)
Change History (2)

Changed December 06, 2009 12:04AM UTC by mcm comment:1

If you read the documentation http://docs.jquery.com/Events/live it says ''Live events currently only work when used against a selector'' as in ''$('.dropdown li').live(...)'' and not ''$(elem).find("li").live(...)''.

To fix you will find that in your function outside of the each loop ''this'' refers to ''$('.dropdown')'' and not an element so you can call your ''this.find('li').live('click', ...)'' method there and it should work since it's equivalent to ''$(this.selector + ' li').live(...)''.

I'm surprised livequery works but if you try a more obvious example like:

''$($(".dropdown")[0]).find("body li").livequery("click", function() { alert(this); });''

Then it fails in livequery just like it does in jQuery in your example.

Changed December 10, 2009 06:01AM UTC by john comment:2

resolution: → worksforme
status: newclosed

This has already been resolved in jQuery 1.4.