John, You were absolutely right. This seams to be the problem. And I think I solved it:
http://dev.jquery.com/ticket/3820 patch: http://dev.jquery.com/attachment/ticket/3820/3820.patch I don't know if this is clumsy or if this could add overhead or not. May be there is a good way to enhance it, but i think it's fine. Here is an working test case with jquery 1.3b2 (6078) patched by me: http://irae.pro.br/jquerytests/live.html.patched.html I'm celebrating my first patch proposal to jQuery, hope it is accepted. =) On Fri, Jan 9, 2009 at 5:58 PM, John Resig <[email protected]> wrote: > > Here is what I think is happening: > > First click: Since there's only a text node inside of the link both > callbacks work as expected - the target of the event is the anchor > element. The one handler ends up modifying the contents with .html(). > > Second click: The first handler is run - but the target is the span, > this time. You end up deleting the span while the event is still > happening - stranding all the other events (they were targeted on an > element that no longer exists). > > For example, if you used .text("Click me") instead of the html > business then this would've worked. > > I don't really see a clear way to make this "just work". The target of > the event was nuked while the event was still happening - we're kind > of up the creek without a paddle on this one. > > I'm open to thoughts, but I don't see a clear way to resolve this - at > least not before the final 1.3 release. > > Could you open a bug on this, at least? It'll be good to remember this > issue. > > --John > > > > On Fri, Jan 9, 2009 at 9:34 AM, John Resig <[email protected]> wrote: > > Thanks for the report, I'll look in to this. > > > > --John > > > > > > > > On Thu, Jan 8, 2009 at 10:45 PM, Iraê <[email protected]> wrote: > >> I'm using 1.3b2 (6070) and found the following behavior. > >> > >> - using 2 .live() handlers for same link. > >> - 1st handler always fire and modify the link with .html(string) > >> - 2nd handler fire once, them stops firing. > >> > >> I've made a test case: > >> http://irae.pro.br/jquerytests/live.html.html > >> > >> The weird thing is that after the manipulation, if you stop modifying > the > >> DOM (use toggle link in test case), both handlers fire again. > >> > >> I dug into jQuery source but was unable to solve the problem myself to > >> present a patch. But I found out that if I use .wrapInner() instead of > >> .html() everything works fine. To me it seems that .closest() used in > >> liveHandler can't match the element for delegation during domManip for > some > >> reason, but this was as far as I could get. > >> > >> > >> > >> >> > >> > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---
