2008/3/12 Marco M. [email protected]:
Avete ragione l’ultima versione di prototype, la 1.6.2 che sto provando
ora supporta le funzioni a cascata (e forse anche la 1.5.0, sbagliavo
qualcosa io?) però, solo curiosità, non capisco perchè avere un doppio
selettore $ e il $$ per il css, tra l’altro questo restituisce un array
e bisogna ciclare tra gli elementi, mentre con jquery facendo esempio:
$(‘h2’).show(‘slow’).text(‘bla bla bla bla’)
anche in prototype puoi fare cose del genere:
$$(‘h2’).invoke(‘appear’, {duration: 0.5}).invoke(‘update’, ‘nuovo
testo’)
$$(‘h2’).invoke(‘setStyle’, {background: ‘red’})
Trovo anche un pò scomodo l’utilizzo di scrip.aculo.us, con la necessità
di inserire il costruttore, esempio:
onclick=“new Effect.toggle(‘attachment_new’,‘appear’); return false;”
non si possono usare le cascate anche per gli effetti? Io non ci sono
riuscito
Gli effeti puoi applicarli a cascata come nell’esempio precedente dove
uso
appear. Qui dovresti più che altro agiungere un handler all’evento click.
Potresti fare cosi:
$$(‘a.my_link_class’).invoke(‘observe’, ‘click’, function() {
$(attachment_new).appear() } )
Se è solo un link puoi fare:
$(‘link_id’).observe(‘click’, function() { $(‘hidden_div’).appear() });
Poi altra cosa: solitamente utilizzo una classe “.hidden” per nascondere
gli elementi… prototype (come anche jquery) utilizza gli style (per
prevalere su eventuali classi) ma facendo una show di un mio elemento
.hidden non lo mostra perchè lo show toglie (se c’è) il display:none
dallo style, mentre jquery fa un display: block, riuscendo così a
mostrare il contenuto
E’ vero, devi per forza mettere lo stile inline. Se proprio non vuoi
farlo,
potresti metterlo da js invece che dallo stile:
$$(‘div.hidden’).invoke(‘setStyle’, {display: ‘none’});