【发布时间】:2011-08-22 11:46:15
【问题描述】:
我有一个问题,因为我不明白。
我想在使用 jquery 显示下一个选项卡和编写如下代码之间等待:
$('#tabs ul .ui-corner-top').each(function(){
setTimeout(function(){},2000)
$(this).children('a').click();
});
如果单击下一个选项卡,我预计会等待 2 秒。 但是超时只开始一次,所有hrefs都会立即点击而无需等待。
然后我尝试了一些不同的东西:
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选项卡)之间自动切换,等待下一次点击。
【问题讨论】:
-
您能重新表述一下您要完成的工作吗?你的问题不是很清楚。此外,您应该将函数而不是字符串传递给
setTimeout()和setInterval()。 -
看我的编辑,我想我已经弄清楚你在追求什么。您实际上需要将
tablink变量传递给changeTab,现在它只是字符串的一部分。正如我之前所说,不要将字符串传递给setTimeout。