在jquery中延迟声明?

时间:2012-07-24 15:48:57

标签: javascript jquery

我在这里有两行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);

    });

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

6 个答案:

答案 0 :(得分:9)

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

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

        alert(e.id);

    });
})

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

答案 1 :(得分:1)

您可以使用delay()方法:

   $activeToggle.delay(1250).toggle("fast");

答案 2 :(得分:1)

setTimeout( function () { $activeToggle.toggle("fast"); }, 1250);

答案 3 :(得分:0)

利用jQuerys延迟功能:)

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

        alert(e.id);

    });
})

答案 4 :(得分: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);
});

答案 5 :(得分:0)

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

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

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