最後の jQuery 1.10.2 からバグが発生しています。この問題に対する (他の) 解決策があるかどうかはわかります。
私のスクリプトは、1 つのモデル (アイテム モデル) から複数の DIV ブロック (名前付きアイテム) を作成し、最後のブロックの後に現在のブロックを追加し、「ブラインド」効果で表示します。
コードは次のとおりですが、このリンクでオンラインでテストすることもできます。
<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>
この問題は、:last と insertAfter() でも同じです。
ロジック:
- 最初のアイテムがうまく表示されて効果が発生した(そうでないか、別のバグ?でも時間が経過する)
- エフェクト アニメーションの間、要素は外注または交換されます。
- 次の項目は DOM の外に挿入されるため (after() が DOM に挿入する必要がある場合のイベント)、ページにはありません。
この動作は jQuery のエラーですが、この問題を克服する必要があります。
私が知っている解決策:
- エフェクトは使用しないでください。
- コンテナーと append() を使用します。
- ブラインドの代わりにスロー効果を使用します。(A. Wolff に感謝)
- DOM に要素を追加してから、すべてを表示します。(A. Wolff に感謝)
ご協力いただきありがとうございます。