On Apr 24, 2009, at 1:38 AM, katz wrote:

> On Event observers, I just realized it wasn't working because the html
> was only inserted upon calling "Add new item variation."
>
> So it would definitely fail regardless of whether
>
> document.observe('dom:loaded',function() or  
> Event.observe(window,'load',function() is used.
>
> That's something I didn't see earlier.
> Adding the script below the button works fine anyway.


Read up on event delegation, that can save you a lot of specific code  
(and duplication). Basically, you take advantage of the fact that  
events usually bubble up until something catches them. So observe a  
click on the document, or on some other element that's higher up the  
DOM tree than your inserted element, and even when the click hits the  
child of that element, the parent will "hear" it.

<div id="form_container">
//buncha dynamic form elements in here
<input type="button" class="copy" value="Copy" id="button_3" />
(that button could be there in source, might be added later by JS,  
doesn't matter for the following to work)
</div>

//script
$('form_container').observe('click',function(evt){
        var elm = evt.element();
        if(elm.hasClassName('copy')){
                //do your copy stuff here, using DOM traversal to work out What 
to  
copy Where
        }
        if(elm.hasClassName('somethingElse')){
                //another behavior here
        }
        ...
});

Walter

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to