为什么可以';我不能用jQuery延迟remove调用吗
我希望一个div淡出,然后被删除:为什么可以';我不能用jQuery延迟remove调用吗,jquery,jquery-ui,delay,Jquery,Jquery Ui,Delay,我希望一个div淡出,然后被删除: $('#div').delay(1000).fadeOut(300); $('#div').delay(1300).remove(); 不幸的是,这只是直接删除div,没有延迟。为什么我不能延迟删除操作?有什么解决办法 谢谢.delay()仅适用于通过动画队列的方法。因此,它适用于.fadeOut()(动画),但不适用于.remove()(非动画) 为了向您展示这是多么专业,这不会延迟: $('#div').delay(1000).hide(); 但是
$('#div').delay(1000).fadeOut(300);
$('#div').delay(1300).remove();
不幸的是,这只是直接删除div,没有延迟。为什么我不能延迟删除操作?有什么解决办法
谢谢.delay()
仅适用于通过动画队列的方法。因此,它适用于.fadeOut()
(动画),但不适用于.remove()
(非动画)
为了向您展示这是多么专业,这不会延迟:
$('#div').delay(1000).hide();
但是,这确实:
$('#div').delay(1000).hide(1);
在hide方法上添加持续时间会将其转换为动画,然后使用动画队列,然后使用.delay()
要删除延迟项,可以使用setTimeout()
调用:
setTimeout(function() {
$('#div').remove();
}, 1300);
或者变得有点棘手,在动画上使用完成函数,如下所示:
$('#div').delay(1000).hide(1, function() {
$(this).remove();
});
如果希望在淡出后删除元素,可以使用
fadeOut
的回调参数
$('#div').delay(1000).fadeOut(300, function(){
$(this).remove();
});
你可以试试这样的
$('#div').delay(1000).fadeOut(300,function(){
setTimeout(function(){
$('#div').remove()
} ,1300);
});
我认为这是应该的。希望它有帮助非常确定
delay
只对动画有效。delay是用于动画效果,而不是jQuery DOM操作方法$('#div')。delay(1000).fadeOut(300,function(){$(this).remove();})代码>?@火箭有答案。并且可能应该发布他的评论,因为这是针对这种情况的正确答案。hide
仍然将元素保留在DOM中,而remove
没有。谢谢您的回复。有没有可以处理非动画动作的延迟方法?@jay:有好的'olsetTimeout
,但除此之外,不是真的。它适用于动画,因为它们在队列中(而且它可能使用setTimeout
)。您只需使用setTimeout()即可。我确实在我的答案中添加了一种在动画上使用完成函数进行移除的方法。这使您可以使用.delay()
@Rocket-阅读我的其余答案,了解我为什么使用.hide()作为示例。我只是在解释.delay()如何工作或不工作。然后,我展示了几个确实删除该项的示例。不要将字符串传递给setTimeout
,而是传递一个函数。我认为OP希望在完成fadeOut
后立即删除该元素。