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 <[email protected]>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 <[email protected]> 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 > [email protected]. > To unsubscribe from this group, send email to > [email protected]<prototype-scriptaculous%[email protected]> > . > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en.
