2012-07-24 62 views
0

我在这里有两行javascript,当切换功能执行时,我希望在find函数发生之前延迟。延迟在jQuery中的声明?

$activeToggle.toggle("fast"); // i want this to run and then after 1250 millisec 
$activeToggle.find(".anime").each(function (i,e){ // this code runs 

     alert(e.id); 

    }); 

我希望延迟代码执行第二行,因为某些原因,警报发生的切换动作发生之前,所以他们必须在有路推迟第二行。谢谢

+0

也许使用一个计时器? – Kotsu 2012-07-24 15:50:13

+0

setTimeout()..? – j08691 2012-07-24 15:50:32

+2

你如何使用切换的动画回调?这样你就可以使弹出窗口出现在动画完成的时刻... – TheZ 2012-07-24 15:50:50

回答

9

使用回调函数。这可确保在运行循环功能之前切换已完成。

$activeToggle.toggle("fast", function(){ 
    $(this).find(".anime").each(function (i,e){ // this code runs 

     alert(e.id); 

    }); 
}) 

这样你就不需要延迟。您的代码将在toggle()函数后立即运行。

+0

OP表示他希望在查找功能之前延迟1250 ms。 – j08691 2012-07-24 15:54:29

+1

@ j08691我相信这只是因为OP想要确保'toggle()'已经完成执行。我的代码确保它有。 – Curt 2012-07-24 15:55:16

+0

是的,谢谢CURT – unknown 2012-07-24 16:00:17

1

您可以使用delay()方法:

$activeToggle.delay(1250).toggle("fast"); 
1
​​
0

。利用jQuerys延时功能:)

$activeToggle.delay(1250).toggle("fast", function(){ 
    $(this).find(".anime").each(function (i,e){ // this code runs 

     alert(e.id); 

    }); 
}) 
0

藏汉作为使用回叫您可以拉福斯你的代码执行之前要等待使用.stop()

$activeToggle.toggle("fast"); // i want this to run and then after 1250 millisec 
$activeToggle.find(".anime").stop(true,true).each(function (i,e){ // this code runs 
     alert(e.id); 
}); 
0

如果您的目标是在动画完成后触发某个功能,则可以传递toggle()回调函数,该函数仅在动画完成后运行。

$activeToggle.toggle("fast", function() { 
    $activeToggle.find(".anime").each(

    function(i, e) { 
     alert(e.id); 
    }); 
});