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 -

Reply via email to