jQuery / JS模拟

时间:2011-10-19 16:43:18

标签: javascript jquery

我不是jQuery或Javascript的专家(我最近才开始使用它),所以这可能听起来像个愚蠢的问题: 我有4个标签,所有标签都是可点击的。所以,我制作了2个函数,1个用于实际执行点击,1个仅用于“模拟”点击,因此我可以每隔5秒更改一次标签。我所做的是,将bool变量“click”设置为false,如果执行了实际点击功能,则设置为“true”,因此自动制表符切换停止。在这两个函数下面,我添加了一个像这样的while循环:

var nr = 0;
while(!klik){
    tabss.eq(st % 4).click().delay(5000); //this is the "simulation"
    st++;
}

现在,它会打开第一个标签,但是在5秒后没有任何反应。有什么建议?我想要的就像一个幻灯片停止,当用户点击某些内容时停止。

2 个答案:

答案 0 :(得分:3)

.delay仅用于jQuery动画。您需要使用的是setTimeoutsetInterval

var timer = setInterval(function() {
    if (!klik) {
        clearInterval(timer);
    } else {
        st %= 4;
        clickontab($tabs.eq(st++));
    }
}, 5000); // milliseconds

$('div.tab').click(function(e) {
    e.preventDefault();
    klik = false;
    clickontab(this);
});

function clickontab(tab) {
    // code to bring a particular tab to the front
}

http://jsfiddle.net/mblase75/CDNXv/2/

答案 1 :(得分:0)

我推荐这种方法:

var i = 0;

setInterval(openTab,4000);

function openTab(){
   if(i>4) i=0;
   tabss.eq(i).click();
   i++;

}