Rimuovere un elemento dal DOM dopo il Fade di script.aculo.us
Mi è capitato spesso di avere il seguente problema: una lista ordinabile di oggetti con la possibilità di eliminarne uno con una chiamata AJAX. Una volta eliminato l’oggetto dal database e fatto scomparire dalla pagina con il seguente comando:
1 render :update do |page| 2 page.visual_effect :fade, "item" 3 end
Così facendo l’elemento del DOM viene solamente nascosto e non rimosso, quindi se andate a riordinare gli elementi otterrete un errore in quanto viene passato anche l’id dell’oggetto appena eliminato. Per ovviare a questo problema ho pensato di variare il codice in:
1 render :update do |page| 2 page.visual_effect :fade, "item" 3 page.remove "item" 4 end
Così però viene perso l’effetto di fade in quanto subito dopo averlo lanciato viene rimosso l’elemento dal DOM. Per risolvere il problema elegantemente, senza mettere un timeout di attesa per l’effetto fade basta utilizzare uno dei callback degli effetti di script.aculo.us:
1 render :update do |page| 2 page.visual_effect :fade, "item", {:afterFinish => "function(){Element.remove('item')}"} 3 end
Così eviterete il problema ed avrete prima l’effetto di fade e poi la rimozione dell’elemento dal DOM della pagina.


Il nome corretto del callback e’ :afterFinish, al posto di :after_finish usato (penso) erroneamente nell’ultimo frammento di codice.
A parte questo, l’articolo mi e’ stato molto utile.
Ciao Massimo,
mi fa piacere che l’articolo ti sia risultato utile. Grazie per la segnalazione! Ho ricontrollato il codice dove l’avevo utilizzato ed infatti non funzionava
Grazie ancora
Era esattamente quello di cui avevo bisogno
Grazie!!!
Ciao Matte,
mi servirebbe tantissimo questo codice, ma nn riesco a implementarlo.
ho provato a cercare “page.visual_effect” in tutto il proggetto e non lo trovo, naturalmente uso script.aculo.us. mi puoi dire come posso fare ?
Ciao Marco,
potresti dare un occhio alla guida presente sul nuovo sito di script.aculo.us all’indirizzo:
http://github.com/madrobby/scriptaculous/wikis/core-effects
Trovi la lista di callback, variabili, parametri e come utilizzare gli effetti. Spero ti torni utile!
A presto