Ricevo un bug da jQuery 1.10.2, l'ultimo, e vorrei sapere se qualcuno ha una (altra) soluzione per questa edizione.jQuery show() fallisce con effetto last(), after() e "blind"
Il mio script crea più blocchi DIV (elementi denominati) da un modello (modello di articolo), aggiunge il corrente dopo l'ultimo e lo visualizza con un effetto "cieco".
Questo è il codice ma è anche possibile testarlo online allo this link.
<div id="item_model" style="display: none;" class="item">MODEL</div>
<button class="addBtn">Add 5 items</button>
<script>
$(".addBtn").click(function() {
for(var i=0; i<5; i++) {
// Clone model
var p = $("#item_model").clone(true, true);
// Modify item
p.removeAttr("id");
p.text("ITEM n°"+(i+1));
// Add item to the DOM
$(".item").last().after(p);
// Show item
$(p).show("blind");
//$(p).show();
}
});
</script>
Il problema è lo stesso con: last e insertAfter().
La logica:
- Primo elemento è ben visualizzato e si è verificato il suo effetto (o non, un altro bug ma il tempo trascorre?)
- Durante un'animazione effetto, l'elemento è in outsourcing ou sostituito.
- Gli elementi successivi vengono inseriti fuori dal DOM (evento se after() deve essere inserito nel DOM), quindi non ci sono nella pagina.
Questo comportamento è un errore di jQuery ma devo risolvere questo problema.
Le soluzioni che so:
- Non utilizzare alcun effetto.
- Utilizzare un contenitore e aggiungere().
- Utilizzare l'effetto lento anziché il buio. (Grazie a A. Wolff)
- Aggiungi elementi al DOM e AFTER, mostra tutto. (Grazie a A. Wolff)
Grazie a tutti per il vostro contributo.
Stranamente, se metto il codice in un JSFiddle funziona benissimo: http://jsfiddle.net/TrueBlueAussie/n2UVp/ –
@TrueBlueAussie se non si dispone di jQuery UI http://jsfiddle.net/arunpjohny/AN3ft/1/ –
@Arun P Johny: ben individuato. Quindi il problema è con l'inclusione di JQueryUI. Almeno questo lo restringe :) –