jQuery 1.10.2から最後のバグを取得しています。この問題。jQuery show()はlast()、after()、およびblind(ブラインド)の効果で失敗する
私のスクリプトは、1つのモデル(アイテムモデル)から複数のDIVブロック(名前付きアイテム)を作成し、最後のものの後ろに現在のものを追加し、それを「ブラインド」効果で表示します。
コードはありますが、オンラインで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>
問題は、lastとinsertAfter()と同じです。
ロジック:
- まず項目がうまく表示され、その効果が発生した(またはしない、別のバグではなく、時間の経過?)効果アニメーションの間に
- は、要素がOU置き換え委託してさ。
- 次の項目はDOMから挿入されます(after()がDOMに挿入する必要がある場合)ので、ページには存在しません。
この動作はjQueryのエラーですが、この問題を克服する必要があります。私が知っている
ソリューション:
- は、任意の効果を使用しないでください。
- コンテナを使用してappend()を使用します。
- ブラインドではなくスローエフェクトを使用します。 (Awolffに感謝します)
- DOMに要素を追加してから、すべてを表示します。 (ありがとう、A.ウォルフ)
お寄せいただきありがとうございます。
奇妙なことに、あなたのコードをJSFiddleに入れれば、うまくいきます。http://jsfiddle.net/TrueBlueAussie/n2UVp/ –
jQuery UIがあれば@TrueBlueAussieではなくhttp://jsfiddle.net/arunpjohny/AN3ft/1/ –
@Arun P Johny:よく目が離せない。したがって、問題はJQueryUIを含めることにあります。少なくともそれはそれを絞り込みます:) –