在setInterval()内触发('click')

时间:2011-11-07 10:17:30

标签: javascript

我有这段代码:

setInterval(function() {
    $('.button2').trigger('click');
    $('.button3').trigger('click');
}, 5000);

结果:

它每隔5秒同时按下.button2和.button3。我需要这样的东西 - 按5秒后按.button2,按5秒后按.button3,每按一次按钮和按下.button3之间需要延迟 - 再次按.button2(类似循环)。

任何帮助将不胜感激!

为flesk编辑:

$(document).ready(function (){
    $('.goluboi a').click(function(){
        var integer = $(this).attr('rel');
        $('.videos .cover').animate({left:-875*(parseInt(integer)-1)})  /*----- Width of div mystuff (here 160) ------ */
        $('.goluboi a').each(function(){
        $(this).removeClass('active');
            if($(this).hasClass('button'+integer)){
                $(this).addClass('active')}
        });
    });

    setTimeout(function() {
        triggerClick('.button', 0)
    }, 5000);
    function triggerClick(selector, index) {
        var buttons = $(selector);
        var mod = index++ % buttons.length;
        $(buttons[mod]).trigger('click');
        setTimeout(function() {
            triggerClick(selector, index);
        }, 5000);
    }
});

4 个答案:

答案 0 :(得分:3)

您可以使用setTimeout

执行此操作
function a() {
    $('.button2').trigger('click');
    setTimeout(b, 5000);
}
function b() {
    $('.button3').trigger('click');
    setTimeout(a, 5000);
}
setTimeout(a, 5000);

答案 1 :(得分:3)

你可以这样做:

setTimeout(function() {
    triggerClick('.button2');
}, 5000);

function triggerClick(selector) {
    $(selector).trigger('click');
    selector = (selector == '.button2') ? '.button3' : '.button2';
    setTimeout(function() {
        triggerClick(selector);
    }, 5000);
}

编辑:回答下面的评论:

setTimeout(function() {
    triggerClick('.button', 0)
}, 5000);

function triggerClick(selector, index) {
    var buttons = $(selector);
    var mod = index++ % buttons.length;
    $(buttons[mod]).trigger('click');
    setTimeout(function() {
        triggerClick(selector, index);
    }, 5000);
}

适用于任意数量的按钮,只要它们都具有相同的类。无论如何,无需将它们称为“button1”,“button2”和“button3”。这就是id的用途。

<强> EDIT2:

如果我理解您的更新,您想要的是:

setTimeout(function() {
    triggerClick('.goluboi a.button', 0)
}, 5000);
function triggerClick(selector, index) {
    var buttons = $(selector);

    // Your logic
    var integer = $(this).attr('rel');
    $('.videos .cover').animate({left:-875*(parseInt(integer)-1)})
    $(buttons).removeClass('active');

    var mod = index++ % buttons.length;

    $(buttons[mod]).addClass('active').trigger('click');
    setTimeout(function() {
        triggerClick(selector, index);
    }, 5000);
}
});

答案 2 :(得分:2)

丑陋但它有效。

var clickButton = false;

setInterval(function() {
    if( clickButton ) {
        clickButton = false;
        $('.button2').trigger('click');
    } else {
        clickButton = true;
        $('.button3').trigger('click');
    }
}, 5000);

答案 3 :(得分:1)

已发布好的答案。这是另一个:

setInterval(function() {
    $('.button2').trigger('click');
}, 10000);

setTimeout(function() {
    setInterval(function() {
        $('.button3').trigger('click');
    }, 10000);
}, 5000);

立即开始第一个间隔,5秒后开始第二个间隔,最终结果是每隔10秒运行两个间隔,但偏移5秒。