写这个定时jquery函数的正确方法

时间:2012-12-13 12:47:16

标签: jquery timer settimeout setinterval

我希望此功能每4秒启动一次。有没有办法把它们放在一个数组中,每4秒调用一次,而不是这样。此外,这种方式在实际开始之前有16秒的延迟。提前谢谢。

setInterval(function() {
     setTimeout(function () {
         $j('.menu2').trigger('click');
         }, 0000);

         setTimeout(function () {
         $j('.menu3').trigger('click');
          }, 4000);

         setTimeout(function () {
         $j('.menu4').trigger('click');
          }, 8000);

         setTimeout(function () {
         $j('.menu1').trigger('click');
          }, 12000);

}, 16000);

2 个答案:

答案 0 :(得分:1)

试试这个

setInterval(function () {
        var time = 0;
        for (i = 1; i < 5; i++) {
            setTimeout(function () {
                $j('.menu' + i).trigger('click');
            }, time);
            time += 4000;
        }
    }, 16000);

更新

http://jsfiddle.net/6NwLG/1/

setInterval(function () {
        var time = 0;
        for (i = 1; i < 5; i++) {

            test(time, i);
            time += 4000;
        }
        function test(time, id) {
            setTimeout(function () {
                $('.menu' + id).click();
            }, time);
        }
    }, 16000);

答案 1 :(得分:0)

$(document).delay(12000, function() {
    var interval = setInterval( function() {
       time = 2000;
       m = 1;
        for( i =0; i < 5; i++) {
       setTimeout( function() {
           $('.menu'+m).trigger('click');
           time = time+2000;
           m = m+1;
       }, time);
    }
    }, 4000);
});