【发布时间】:2010-09-23 09:48:25
【问题描述】:
我有这行 JavaScript,我看到的行为是 selectedLi 立即消失而没有“向上滑动”。这不是我预期的行为。
我应该怎么做才能让selectedLi 在被移除之前向上滑动?
selectedLi.slideUp("normal").remove();
【问题讨论】:
标签: javascript jquery animation
我有这行 JavaScript,我看到的行为是 selectedLi 立即消失而没有“向上滑动”。这不是我预期的行为。
我应该怎么做才能让selectedLi 在被移除之前向上滑动?
selectedLi.slideUp("normal").remove();
【问题讨论】:
标签: javascript jquery animation
是否可以通过将 remove 调用放入到 slideUp 的回调 arg 中来修复它?
例如
selectedLi.slideUp("normal", function() { $(this).remove(); } );
【讨论】:
你需要更明确:而不是说“这个”(我同意应该可以),你应该这样做:
$("#yourdiv").slideUp(1000, function() {
$(this).remove();
});
【讨论】:
$("#yourdiv") 而不是 $(this) 是完全多余的,这不是这段代码修复 OP 问题的原因。这段代码解决了这个问题,因为它使用了complete 回调。
最简单的方法是调用 slideUp 中的“remove()”函数作为参数,就像其他人所说的那样,如下例所示:
$("#yourdiv").slideUp("normal", function() {
$(this).remove();
});
必须在匿名函数() 中调用它,以防止在 slideUp 结束之前执行 remove()。另一种等效的方法是使用 jQuery 函数“promise()”。更适合那些喜欢不言自明的代码的人,比如我 ;)
$("#yourdiv").slideUp("normal").promise().done(function() {
$(this).remove();
});
【讨论】:
使用 Promise,您还可以等待多个动画完成,例如:
selectedLi.slideUp({duration: 5000, queue: false})
.fadeOut({duration: 3000, queue: false})
.promise().done(function() {
selectedLi.remove()
})
【讨论】:
selectedLi.slideUp(200, this.remove);
【讨论】: