【发布时间】:2013-09-23 08:26:19
【问题描述】:
我从最后一个 jQuery 1.10.2 中得到一个错误,我想知道是否有人对此问题有任何(其他)解决方案。
我的脚本从一个模型(项目模型)创建多个 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() 相同。
逻辑:
- 第一个项目显示良好并且它的效果发生了(或者没有,另一个错误?但是时间过去了)
- 在效果动画期间,元素被外包或替换。
- 下一项从 DOM 中插入(事件 if after() 应该将其插入 DOM),因此页面中没有。
这种行为是 jQuery 的错误,但我必须克服这个问题。
我知道的解决方案:
- 不要使用任何效果。
- 使用容器和 append()。
- 使用缓慢效果而不是盲目。 (感谢 A. Wolff)
- 向 DOM 中添加元素,然后显示全部。 (感谢 A. Wolff)
感谢大家的贡献。
【问题讨论】:
-
奇怪的是,如果我将您的代码放在 JSFiddle 中,它可以正常工作:jsfiddle.net/TrueBlueAussie/n2UVp
-
@TrueBlueAussie 如果你有 jQuery UI jsfiddle.net/arunpjohny/AN3ft/1
-
@Arun P Johny:很好看。所以问题在于包含 JQueryUI。至少这缩小了范围:)
-
问题好像是效果:jsfiddle.net/AN3ft/2
标签: javascript jquery jquery-ui dom jquery-effects