2011-11-07 39 views
-2

我有这样的代码:触发器( '点击')的内部的setInterval()

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

结果:

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

任何帮助,将不胜感激!

编辑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); 
    } 
}); 
+0

同样在这里。你很幸运,你有很多答案Heihachi。 – flesk

回答

1

你可以这样做:

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); 
} 
}); 
+0

函数triggerClick(选择器) - 无var。不工作... :(困住.button2,然后不再移动 – Heihachi

+0

谢谢。是的,它现在有效:http://jsfiddle.net/flesk/L7URD/ – flesk

+0

看ruh.kz 如果有5个按钮? – Heihachi

2

丑陋,但它的工作原理。

var clickButton = false; 

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

你可以用setTimeout的

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

很好的答案已经这样做了公布。这里的另一个:

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

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

这将启动紧接在第一间隔和5秒后的第二时间间隔,条件是两个间隔正在运行每10秒的最终结果,但通过5秒抵消。