> Your "ul" element will receive all the clicks from any element inside it, (if 
> the event is not stopped of course)
> the ones that exists, and the ones that may be created later.

Code updated to see click handling on new elements : 
http://jsfiddle.net/QXsMM/9/


Le 31 janv. 2011 à 16:11, Clement Hallet a écrit :

> As told before, you can use the event delegation :
> 
> Your "ul" element will receive all the clicks from any element inside it, (if 
> the event is not stopped of course)
> the ones that exists, and the ones that may be created later.
> This is called "bubbling" and there is several article about this.
> 
> By using that behavior you can write this code : http://jsfiddle.net/QXsMM/6/
> 
> This is the same mechanism as the one from the jQuery Live plugin.
> 
> -- 
> Clément
> 
> 
> Le 31 janv. 2011 à 15:42, roark a écrit :
> 
>> Hi Clement,
>> 
>> Thanks for the quick response!
>> 
>> I have added the code on jsfiddle so it can be viewed here:
>> http://jsfiddle.net/roark/QXsMM/5/
>> 
>> Thanks again for your help
>> 
>> On Jan 31, 4:07 pm, Clement Hallet <[email protected]> wrote:
>>> Hi,
>>> 
>>> You can use only one listener and deals with event delegation.
>>> Could you please put your code onhttp://jsfiddle.net/and i'll try to help 
>>> you.
>>> 
>>> --
>>> Clément
>>> 
>>> Le 31 janv. 2011 à 15:00, roark a écrit :
>>> 
>>>> Hi Everyone,
>>> 
>>>> I think I must be writing bad code here.
>>> 
>>>> I will load a page with a few li's with links in them. once loaded, I
>>>> add events to the links
>>>> [code]
>>>> $$('li a').each(function(el){
>>>>           el.addEvent('click',function(e){
>>>>               e.stop();
>>>>               //code to execute
>>>>           });
>>>>   });
>>>> [/code]
>>> 
>>>> Then when I create an element dynamically I am writing the same code
>>>> again:
>>>> [code]
>>>> var li =  new Element('li').inject($('ul.list'));
>>>> var del =  new Element('a', {'class':'delete sprite',
>>>> 'title':'delete'+player.name}).inject(li);
>>>> //code being repeated
>>>> el.addEvent('click',function(e){
>>>>   e.stop();
>>>>   //code to execute
>>>> });
>>>> [/code]
>>> 
>>>> It may not look like much but when I send requests the code gets long
>>>> and it seems I'm duplicating code when I add the 'click' event.
>>> 
>>>> This seems like bad code to me, but can't think of a way to write it
>>>> any more efficient
>>>> Any input is greatly appreciated!
> 

Reply via email to