我有一个问题,因为我不明白这一点。
我想等待用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标签)之间自动切换,等待一段时间,直到下一次点击。
答案 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为每个要同时激活的结果启动计时器。