jQuery slideUp()。remove()似乎在删除之前不显示slideUp动画

时间:2008-11-21 06:11:08

标签: javascript jquery animation

我有这一行JavaScript,我看到的行为是selectedLi在没有“向上滑动”的情况下立即消失。这不是我期望的行为。

我应该怎么做才能让selectedLi在删除之前向上滑动?

selectedLi.slideUp("normal").remove();

5 个答案:

答案 0 :(得分:187)

可以通过将回调中的删除调用arg移至slideUp来修复它吗?

例如

selectedLi.slideUp("normal", function() { $(this).remove(); } );

答案 1 :(得分:14)

你需要更明确:不要说“这个”(我同意应该这样做),你应该这样做:

$("#yourdiv").slideUp(1000, function() {
    $(this).remove();
});

答案 2 :(得分:6)

最简单的方法是将slideUp中的“remove()”函数调用为其他人所说的参数,如下例所示:

$("#yourdiv").slideUp("normal", function() {
    $(this).remove();
});

必须在匿名函数()中调用它以防止在slideUp结束之前执行remove()。另一种相同的方法是使用jQuery函数“promise()”。对于那些喜欢自解释代码的人来说更好,比如我;)

$("#yourdiv").slideUp("normal").promise().done(function() {
    $(this).remove();
});

答案 3 :(得分:2)

使用promises,你也可以等待多个动画完成,例如:

selectedLi.slideUp({duration: 5000, queue: false})
.fadeOut({duration: 3000, queue: false})
.promise().done(function() {
    selectedLi.remove()
})

答案 4 :(得分:-2)

selectedLi.slideUp(200, this.remove);