Indeed T.J. catching bubbling events is something I need to consider more
often.

Thanks for the heads up :-)

On Mon, Aug 23, 2010 at 10:05 AM, T.J. Crowder <t...@crowdersoftware.com>wrote:

> Hi,
>
> The $$ function returns an array[1]. Arrays don't have an `observe`
> method. However, Prototype does add an `invoke` method[2] to arrays by
> mixing the Enumerable mix-in into them. So:
>
> $$('input.compare_itm').invoke('observe', 'click', myFunction);
>
> That said, you'll end up hooking the event on each individual element.
> If it's an event that bubbles (and 'click' does bubble), you're
> probably better off hooking the event once on an ancestor element
> (could even be `document`) that all of those elements share, and then
> checking whether the click was on one of your desired elements:
>
> theAncestorElement.observe('click', myFunction);
> function myFunction(event) {
>    var element = event.findElement('input.compare_itm');
>    if (element) {
>        // Process it
>    }
> }
>
> That uses the Element#findElement[3] feature. Alternately, as of
> Prototype 1.7, you can use the new Element#on[4] feature. I haven't
> used it, but I think that looks like this:
>
> theAncestorElement.on('click', 'input.compare_itm', myFunction);
> function myFunction(event, element) {
>    // Use the `element` arg to know which input was clicked
> }
>
> Very much worth taking an hour and reading through the API from
> beginning to end.
>
> HTH,
> --
> T.J. Crowder
> Independent Software Consultant
> tj / crowder software / com
> www.crowdersoftware.com
>
> [1] http://api.prototypejs.org/language/dollardollar/
> [2] http://api.prototypejs.org/language/enumerable/prototype/invoke/
> [3] http://api.prototypejs.org/dom/event/findelement/
> [4] http://api.prototypejs.org/dom/event/on/
>
> On Aug 23, 8:35 am, elivol <eli...@gmail.com> wrote:
> > Hello
> > I have a problem with adding event "click" to elements by class name.
> > I'm trying to add event onclick to all input tags that have class
> > "compare_itm" by this code:
> > $$('input.compare_itm').observe('click', myFunction);
> >
> > But it doesn't work. Is it possible to do in Prototype ?
> > thanks
>
> --
> 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-scriptacul...@googlegroups.com.
> To unsubscribe from this group, send email to
> prototype-scriptaculous+unsubscr...@googlegroups.com<prototype-scriptaculous%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/prototype-scriptaculous?hl=en.
>
>

-- 
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-scriptacul...@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