-2

以下是我需要帮助的片段。一旦迭代了所有跨度,我想调用一个函数。举个例子,如果我有 8 个跨度,在第 8 个跨度的函数运行后,我该如何调用nextFunction()

    $('#div1').animate({ opacity: '0.2' }, 500, function () {
         $('span').each(function () {
             //do something.
         });
         nextFunction();
    });

    function nextFunction() {
         alert("called after the last .each() has occurred");
    };
4

4 回答 4

1

试试$.when()

$('#div1').animate({
    opacity: '0.2'
}, 500, function () {  
    $.when($('span').each(function () {
        //do something.
    })).then(function () {
        nextFunction(); 
    });
});

function nextFunction() {
    alert("called after the last .each() has occurred");
};
于 2013-09-26T16:22:48.473 回答
1

代码实际上应该按您编写的方式按顺序运行,除非您计划在 .each() 循环中使用 AJAX 请求。

于 2013-09-26T16:25:57.023 回答
0

像这样的东西

$('#div1').animate({ opacity: '0.2' }, 500, function () {
         var doSomething = 0,
             ctx = null,
             checker = null;
         checker = function() {
           if (domSomething === $('span').length)
           {
              clearTimeout(ctx);
              nextFunction();
              return ;
           }
           setTimeout(checker, 100);
         };
         $('span').each(function () {
             doSomething += 1;
             //do something.
         });
         checker();
    });
于 2013-09-26T16:24:45.077 回答
0

.each()是同步的。它会按照你的方式工作。看到这个小提琴

于 2013-09-26T16:31:46.130 回答