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.

-- 
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