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

Eri*_*ver 89 javascript jquery animation

我有这一系列的JavaScript,我看到的行为是在selectedLi没有"向上滑动"的情况下瞬间消失.这不是我期望的行为.

我应该怎么做,以便selectedLi在删除之前滑动?

selectedLi.slideUp("normal").remove();
Run Code Online (Sandbox Code Playgroud)

sea*_*anb 188

可以通过将调用删除回调arg到slideUp来修复它吗?

例如

selectedLi.slideUp("normal", function() { $(this).remove(); } );
Run Code Online (Sandbox Code Playgroud)

  • 请注意,"慢"和"快"是唯一的速度.其他速度需要以毫秒为单位,否则默认为400. http://www.keyframesandcode.com/resources/javascript/deconstructed/jquery/#speeds (3认同)

Bla*_*ake 15

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

$("#yourdiv").slideUp(1000, function() {
    $(this).remove();
});
Run Code Online (Sandbox Code Playgroud)

  • 使用$(this)而不是$("#yourdiv")更加优化,因为jQuery不需要查找节点. (12认同)
  • 抱歉 = 我忘了删除我的 id,应该是: $('#yourdiv').slideUp(1000, function(){ $('#yourdiv').remove(); }); (2认同)

小智 6

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

$("#yourdiv").slideUp("normal", function() {
    $(this).remove();
});
Run Code Online (Sandbox Code Playgroud)

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

$("#yourdiv").slideUp("normal").promise().done(function() {
    $(this).remove();
});
Run Code Online (Sandbox Code Playgroud)