我已经编写了一个代码来触发我页面上四个标签上的点击事件,并且循环工作正常,因为我使用循环体中编写的警告框进行了测试。但默认情况下,在jquery中,所有迭代都发生得如此之快,以至于无法看到发生的点击事件。
所以我想在do while循环中添加一个短暂的延迟。我写的循环是:
var elets = $('label');
var n = elets.length;
var i=0;
do
{
//setTimeout ( function() {
var forname = elets[i].getAttribute("for");
var selected_label = $('label[for='+forname+']');
selected_label.trigger("click");
i++;
//}, 3000);
} while(i<n)
我也希望这个循环能够不断重复。
答案 0 :(得分:4)
最简单的解决方案是使用setTimeout
。使用立即调用的命名函数,代码可以像do
或for
循环一样简单明了:
var elets = $('label');
var n = elets.length;
var i=0;
(function doOne(){
var forname = elets[i].getAttribute("for");
var selected_label = $('label[for='+forname+']');
selected_label.trigger("click");
if (i++<n) setTimeout(doOne);
})();
答案 1 :(得分:0)
你也可以使用.delay()函数
参考http://api.jquery.com/delay/
例如:
<script>
$( "button" ).click(function() {
$( "div.first").delay( 800);
});
这里div首先会在点击按钮后800毫秒的间隔后进行加载。