On 20 July 2010 23:37, Febo <ilpuccio.f...@gmail.com> wrote: > Thanks Richard and Ralph, > > I'm studing the code but my feeling is that Effect.toggle can't handle > the Object which is always passed by Effect.multiple as last parameter > or let's say "effect". > > I don't know very much JavaScript, so I came up with this solution. > I added a funciton to public/javascripts/prototype.js > > Toggle: function(element, options) { > element = $(element); > effect = ($(options)['effect'] || 'appear').toLowerCase(); > Effect.toggle(element, effect, options); > } > > calling the multiple function: > > Effect.multiple(['id_1','id_2',...,'id_n'], Effect.Toggle, > {'effect':'appear'}) > > I tested the curry but without success, perhaps I'm not so good in JS > so I didn't catch the concept of curry. > If you have a better solution, let me know. > > The problem with the class solution is that I have a table and I want > to hide some rows of this table, I set the class of each row to odd/ > even for zebra colouring. > > On 20 Lug, 19:08, Richard Quadling <rquadl...@gmail.com> wrote: >> On 20 July 2010 17:59, Ralph Brickley <i...@topsoftweb.com> wrote: >> >> >> >> > This is a revelation to me. I didn't know Effect had a multiple. Also, >> > what is curry? >> >> > My solution has been to tag those elements with a class, ie <div >> > class="effects"> >> >> > Then use $$('effects') to get each item and all effects... On each >> >> > Sent from my iPhone >> >> > On Jul 20, 2010, at 9:08 AM, Richard Quadling <rquadl...@gmail.com> wrote: >> >> >> On 20 July 2010 15:55, Febo <ilpuccio.f...@gmail.com> wrote: >> >>> Hello, >> >>> I'd like to use the toggle effect on multiple object at the same time >> >>> I tried with >> >> >>> Effect.multiple(['id_1','id_2','id_n'], Effect.toggle) >> >> >>> but it doesn't work, also I don't know where/how to pass the 'appear' >> >>> parameter >> >> >>> I'm used to call toggle in this way: >> >>> Effect.toggle('my_id_of_interest','appear') >> >> >> At a guess, you need to curry() [1] the parameter. >> >> >> So, can you try ... >> >> >> Effect.multiple(['id_1','id_2','id_n'], Effect.toggle.curry('appear')); >> >> >> Regards, >> >> >> Richard. >> >> >> [1]http://api.prototypejs.org/language/function/prototype/curry/ >> >> "Curries (burns in) arguments to a function, returning a new function >> that when called with call the original passing in the curried >> arguments (along with any new ones)" >> >> The linkhttp://api.prototypejs.org/language/function/prototype/curry/ >> is the documentation for curry. >> >> So, Effect.toggle.curry('appear') returns a new function which, when >> called, will call the Effect.toggle function with 'appear' as the >> first parameter, along with any other parameters supplied by the >> Effect.multiple() function. >> >> Is it the same as $$('effects').invoke('toggle', 'appear'); >> >> Hmm. On the surface, probably yes. But I'm not an expert here. >> >> One difference is that Effect.multiple allows you to supply any ids. >> >> I suppose ... >> >> Effect.multiple($$('effects'), Effect.toggle.curry('appear')); >> >> could also be a similar approach.
Ah. Yes. toggle requires the element first. Using curry() puts the parameters the wrong way round. Sorry about that. So... Effect.multiple ( ['id1', 'id2'], function(el) { Effect.toggle(el, 'appear');} ); maybe. -- 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.