我尝试$('somediv').fadeOut.remove();
但它只删除它,砰......它不等待好的fadeOut,然后删除
为什么..如何尊重fadeout,然后删除..
答案 0 :(得分:38)
使用回调:
$('somediv').fadeOut( function() { $(this).remove(); });
传递给fadeOut()
(docs)的回调函数中的代码在动画完成之前不会执行。
示例: http://jsfiddle.net/p2LWE/
替代方案是queue()
(docs) remove()
(docs),但我认为回调更好。
$('somediv').fadeOut()
.queue(function(nxt) {
$(this).remove();
nxt();
});
答案 1 :(得分:9)
这是一个简单的方法,
$('#somediv').fadeOut(300,function(){ $(this).remove(); })};
或
$('#somediv').fadeOut("slow",function(){ $(this).remove(); })};
答案 2 :(得分:1)
使用jQuery链接,如果有基于时间的组件,链的一部分不会等待其他部分结束。因此,当您希望在另一件事完成时发生某些事情时,您将需要使用回调。在这种情况下,您可以使用参数调用fadeOut()
,以便在完成后运行该函数。像这样:
$('#somediv').fadeOut(function(){ $(this).remove(); })};
所以当fadeOut()
完成时(并且你可以添加一个前导参数来指示所需的时间,以毫秒或'快','正常'或'慢'),它会调用函数,它执行remove()
。