比方说,我有一次运行多个动画,我要再次呼吁所有的人都完成了功能。jQuery的,多个动画后调用回调函数只有一次
只有一个动画,很容易;这有一个回调。例如:
$(".myclass").fadeOut(slow,mycallback);
麻烦的是,如果我的选择找到几个项目,则回调会被调用为他们每个人。
一种解决方法是不是太硬;例如:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var $mc=$(".myclass"),l=$mc.length;
$mc.fadeOut("slow",function(){
if (! --l) $("#target").append("<p>All done.</p>");
});
});
</script>
<style type="text/css">
</style>
</head>
<body>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<div id="target"></div>
</body>
</html>
我的问题是:有没有更好的方法来做到这一点?
在大多数情况下,我用一个布尔值,而不是一个计数器(这样的动作在第一动画结束时进行),但除此之外,它是相同的方法。好问题,我很好奇其他方式。 – 2010-03-12 11:25:04
确实。例如,如果所有动画的长度不相同(不像我简单化的示例中),并且只有在事物停止移动或在浏览器上淡化之后才想做某事,那么您希望等待所有这些动画。 – 2010-03-12 11:32:56