Jquery等待并单击更多次

时间:2011-05-10 13:29:30

标签: jquery timeout click wait

我有一个问题,因为我不明白这一点。

我想等待用jquery显示下一个标签并编码如下:

$('#tabs ul .ui-corner-top').each(function(){
    setTimeout(function(){},2000)
    $(this).children('a').click();
});

如果点击下一个标签,我预计会等待2秒钟。 但Timeout只启动一次,所有href都会立即点击而无需等待。

然后我尝试了不同的东西:

for (i=0;i<$('#tabs ul .ui-corner-top').size();i++) {
    setTimeout('changeTab(i)',i*3000);
}

function changeTab(i) {
    clearTimeout(timeout);
    timeout=setTimeout(function(){
        $('#mainContent').masonry();
    }, 1500);
    tablink='a[href*="#tabs-'+i+'"]';
    $(tablink).click();
}

超时在这里工作,但我不知道为什么。在这里,我只有立即点击的问题。它不会等到单击下一个选项卡。

有人可以帮忙吗?

提前致谢


我完全写了奇怪的东西..对不起......这是我的实际代码,它的工作几乎是:

for (i=0;i<$('#tabs ul .ui-corner-top').size();i++) {
    tablink='a[href*="#tabs-'+i+'"]';
    setTimeout('changeTab(tablink)',i*3000);
}

function changeTab(tablink) {
    $(tablink).click();
}

但他只点击第三个标签(#tabs-2)3次,而不是每个标签一次(1,2,3)就像我想要的那样。为了解释它:我想在标签(jquery ui标签)之间自动切换,等待一段时间,直到下一次点击。

1 个答案:

答案 0 :(得分:0)

如果我理解你的要求......你有很多标签要用计时器进行,但是你的查询过于贪婪。

您要做的是让您的集合使用不同的偏移调用每个集合。

便宜的是,你可以这样做......

    var tabs = $(this).children('a');
    var numberOfTabs = tabs.length;
    for (var item = 0; item < numberOfTabs; item++)
    {
        window.setTimeout(function(){tabs[item].click();},2000*item);
    }

您必须记住,JQuery会返回与您的查询匹配的结果数组,并且这些计时器不会按顺序初始化。定义声明会在您定义时立即开始倒计时。您只是要求JQuery为每个要同时激活的结果启动计时器。