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.

Reply via email to