jQuery slideUp()。remove()在删除发生前似乎没有显示slideUp动画


Answers:



19

您需要更加明确:与其说“ this”(我同意应该起作用),不如说:

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

2
很抱歉=我忘记删除我的ID,应该是:$('#yourdiv')。slideUp(1000,function(){$('#yourdiv')。remove();});
布雷克

12
使用$(this)代替$(“#yourdiv”)更加优化,因为jQuery不需要查找节点。
MaximeBernard

使用$("#yourdiv")代替$(this)完全是多余的,这不是为什么此代码解决了OP的问题。此代码解决了问题,因为它使用了complete回调。
加文

8

最简单的方法是像其他人所说的那样,在slideUp内部调用“ remove()”函数作为一个参数,例如:

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

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

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

3

使用promise,您还可以等待多个动画完成,例如:

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

-2
selectedLi.slideUp(200, this.remove);

1
我测试了-向上滑动后不会移除元素。
康斯坦丁·斯皮林

有效地隐藏元素,但实际上并未将其从DOM中删除。
andreszs 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.