Honestly, I'm at a loss why I'd want that kind of temporary cloned
functionality when you could just use live to achieve the same
functionality with nowhere near the limitations of the implementation
you've described here. It's also nice to be able to excise my event
declarations from my dom manipulations.

Again, I can't think of a situation where your method would be better
in any way than using a live event.

On Jan 27, 11:37 am, jay <jay.ab...@gmail.com> wrote:
> of course if there are other things that may need to be customized
> about the event(s) in question it might make more sense to pass in an
> options object.
>
> On Jan 27, 11:30 am, jay <jay.ab...@gmail.com> wrote:
>
> > I thought the point was to avoid the each()?  What's wrong with:
>
> > $('ul li').append($('<span>Click me!</span>').click(function(){},
> > true);
>
> > and doing $('ul li').append($('<span>Click me!</span>').click(function
> > (){});
>
> > defaults the second argument to false.
>
> > Or you could default it to true and it may stay more backwards-
> > compatible with older versions.
>
> > On Jan 27, 11:22 am, Eric Garside <gars...@gmail.com> wrote:
>
> > > You can already do that using clone. I can't see a need to rewrite in
> > > new code when the ability already exists in the current code. If you
> > > want to clone around your elements around and not apply new styles,
> > > just:
>
> > > $('ul li').each(function(){
> > >    $(this).append($('<span>Click me!</span>').click(function(){}))
>
> > > });
>
> > > On Jan 27, 11:14 am, jay <jay.ab...@gmail.com> wrote:
>
> > > > 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 -- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> > - Show quoted text -

Reply via email to