It's not that I prefer it. I think live()/die() makes sense because the event "lives on" for all matching selectors. What the true arguement would do it give a way to clone the element and it's handler just that one time.
On Jan 27, 10:50 am, Eric Garside <gars...@gmail.com> wrote: > Give them a different selector? > > $('.click1').live('click', function(){}); > $('.click2').live('click', function(){}); > > Would handle the problem easily. Remember, you can always add extra, > non-style based classes which you can use as selectors for events or > effects. > > Also, I'm not sure I understand your objection. If I understand > correctly, you're saying you'd prefer: > > var span = $('<span>Click me</span>').click(function(){}, true); > $('ul li').append(span); > > Instead of: > $('ul li span').live('click', function(){}); > $('ul li').append('<span>Click me</span>'); > > The live syntax is, at least in this example, shorter, more efficient, > cleaner, and easier to use. Perhaps it's just that I'm not > understanding a situation in which I'd run into trouble using it over > an object, kept in memory, with a forced clone(true) bound to it. Can > you think of any? > > On Jan 27, 10:36 am, jay <jay.ab...@gmail.com> wrote: > > > > > live() works, but it involves extra steps. For example something like > > el.click(fn,true) maybe be easier to remember for some. Also live > > differs from what I was thinking in that it continues to bind events > > to the handler based on the selector. I was thinking it should only > > be cloned that one time (with the event handlers included). What if, > > for some reason, elements of a different type were added to the same > > "container", but had a different functionality? live() wouldn't > > necessarily be what you would want. > > > On Jan 27, 10:15 am, Eric Garside <gars...@gmail.com> wrote: > > > > > Perhaps there should be an optional boolean passed to the event > > > > handlers to specify carrying over event handlers like there is with > > > > the clone() method? > > > > There is. That's exactly what live() does. You just define it before > > > runtime. > > > > On Jan 27, 10:06 am, jay <jay.ab...@gmail.com> wrote: > > > > > It actually makes sense, because you've only created one element here: > > > > > var handle = $('<span>Click me</span>'); > > > > > By doing append() on a set of elements using this one element, it may > > > > be implying you would like to clone this element for the elements > > > > after the first one, but it's not completely obvious. Something that > > > > may make more sense is that the one element ends up in the very last > > > > <li>. Perhaps there should be an optional boolean passed to the event > > > > handlers to specify carrying over event handlers like there is with > > > > the clone() method? > > > > > On Jan 27, 9:48 am, errant <d.cheka...@gmail.com> wrote: > > > > > > Hi Eric, thanks for response. > > > > > > Yes, it works that way, but it's kind of unflexible and may be > > > > > impossible to implement when dealing with more complex code, don't you > > > > > think? > > > > > > On 27 янв, 17:29, Eric Garside <gars...@gmail.com> wrote: > > > > > > > I believe it has to do with the new event propogation model > > > > > > implemented with 1.3 > > > > > > > Instead, try using a living event: > > > > > > > <ul> > > > > > > <li></li> > > > > > > <li></li> > > > > > > <li></li> > > > > > > <li></li> > > > > > > <li></li> > > > > > > </ul> > > > > > > > $('ul li span').live('click', function(){ > > > > > > // ... > > > > > > > }); > > > > > > > $('ul li').append('<span>Click me</span>'); > > > > > > > That should work. > > > > > > > On Jan 27, 8:15 am, errant <d.cheka...@gmail.com> wrote: > > > > > > > > Here is the code: > > > > > > > > HTML: > > > > > > > > <ul> > > > > > > > <li></li> > > > > > > > <li></li> > > > > > > > <li></li> > > > > > > > <li></li> > > > > > > > <li></li> > > > > > > > </ul> > > > > > > > > JS: > > > > > > > > $(function(){ > > > > > > > > var handle = $('<span>Click me</span>'); > > > > > > > handle.click(function() { > > > > > > > alert('Thanks'); > > > > > > > }); > > > > > > > $('ul li').append(handle); > > > > > > > > }); > > > > > > > > With jQuery 1.2.6, each time I click on any list's element it > > > > > > > shows > > > > > > > alert. With 1.3.1 in FF3, Safari 3 & Opera 9.63 alert is only > > > > > > > displaying when I click on first element. In IE6,7 everything is > > > > > > > ok. > > > > > > > Is this some kind of bug?- Hide quoted text - > > > > > > - Show quoted text -- Hide quoted text - > > > > - Show quoted text -- Hide quoted text - > > - Show quoted text -