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

trigger('click') inside setInterval()

本文关键字:click setInterval      更新时间:2023-09-26

我有这样的代码:

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

它每隔5秒同时按下。button2和。button3。我需要这样的东西- 5秒通过按。button2, 5秒通过按。button3,需要在每次按钮点击之间的延迟,当。button3被按下时-再次按。button2(类似循环)。

任何帮助将不胜感激!

EDIT for flesh:

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

你可以这样做:

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"answers"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);
}
});

可以使用setTimeout

function a() {
    $('.button2').trigger('click');
    setTimeout(b, 5000);
}
function b() {
    $('.button3').trigger('click');
    setTimeout(a, 5000);
}
setTimeout(a, 5000);

很丑但是很好用

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

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

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

这将立即启动第一个间隔,并在5秒后启动第二个间隔,最终结果是每10秒运行两个间隔,但偏移5秒。