我正在尝试创建一个在队列中工作的效果,以便每个效果仅在前一个效果完成后才开始.我很成功,但我确信有一种更清洁的方式.
这是我到目前为止:
$("tr:last td:nth-child(1) div").slideUp(200,function() { $("tr:last td:nth-child(2) div").slideUp(200,function() { $("tr:last td:nth-child(3) div").slideUp(200,function() { $("tr:last td:nth-child(4) div").slideUp(200,function() { $("tr:last td:nth-child(5) div").slideUp(200,function() { $("tr:last td:nth-child(6) div").slideUp(200,function() { $("tr:last td:nth-child(7) div").slideUp(200,function() { $("tr:last").remove(); }); }); }); }); }); }); });
必须有一个更清洁的方式,对吗?
事先有很多责任.
解决方法
哎哟,这太可怕了!我是用
delay
做的:
var divs = $("tr:last td div"); divs.each(function(idx,el) { $(this).delay(idx * 200).slideUp(200,function(){ if (idx === divs.length - 1) { // 0-based index $("tr:last").remove() } }); });