Otrzymuję błąd z jQuery 1.10.2, ostatniego, i chciałbym wiedzieć, czy ktoś ma jakieś (inne) rozwiązanie dla ten przypadek.jQuery show() kończy się niepowodzeniem z efektem last(), after() i "blind"
Mój skrypt tworzy wiele bloków DIV (nazwanych elementów) z jednego modelu (model elementu), dodaje prąd po ostatnim i wyświetla go z efektem "niewidomym".
Oto kod, ale można go również przetestować online pod numerem 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>
Problem jest taki sam jak: last i insertAfter().
Logika:
- Pierwszy element jest dobrze wyświetlany i jego wpływ doszło (lub nie, kolejny błąd, ale czas mija?)
- Podczas animacji efekt element jest zlecana ou wymienić.
- Kolejne pozycje wstawiane są poza DOM (zdarzenie, jeśli po() powinno zostać wstawione do DOM), więc nie ma ich na stronie.
To zachowanie jest błędem z jQuery, ale muszę pokonać ten problem.
Rozwiązania wiem:
- Nie używaj żadnego efektu.
- Użyj kontenera i dopisz().
- Używaj powolnego efektu zamiast ślepego. (Podziękowania dla A. Wolffa)
- Dodaj elementy do DOM i AFTER, pokaż wszystko. (Podziękowania dla A. Wolffa)
Dziękuję wszystkim za wkład.
Bizarrely, jeśli mogę umieścić swój kod w JSFiddle to działa dobrze: nie http://jsfiddle.net/TrueBlueAussie/n2UVp/ –
@TrueBlueAussie jeśli masz jQuery UI http://jsfiddle.net/arunpjohny/AN3ft/1/ –
@Arun P Johny: Dobrze zauważony. Problem polega na włączeniu JQueryUI. Przynajmniej to zawęża to :) –