0

我这里有两行javascript,当切换功能执行时,我想在查找功能发生之前延迟。

$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);

    });

我想延迟执行第二行代码,因为由于某种原因,警报发生在切换操作发生之前,所以他们必须是延迟第二行的方法。谢谢

4

6 回答 6

9

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

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

        alert(e.id);

    });
})

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

于 2012-07-24T15:50:38.387 回答
1

您可以使用delay()方法:

   $activeToggle.delay(1250).toggle("fast");
于 2012-07-24T15:51:10.617 回答
1
setTimeout( function () { $activeToggle.toggle("fast"); }, 1250);
于 2012-07-24T15:51:22.950 回答
0

利用 jQuerys 延迟功能 :)

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

        alert(e.id);

    });
})
于 2012-07-24T15:55:54.400 回答
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);
});
于 2012-07-24T15:58:51.930 回答
0

如果您的目标是在动画完成后触发一个函数,那么您可以向toggle()传递一个仅在动画完成后运行的回调函数。

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

    function(i, e) {
        alert(e.id);
    });
});
于 2012-07-24T16:11:24.367 回答