3

我已经编写了一个代码来触发我页面上四个标签上的点击事件,并且循环工作正常,因为我使用写在循环体中的警报框对其进行了测试。但默认情况下,在 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)

我也希望这个循环不断重复。

4

2 回答 2

4

The simplest solution is to use setTimeout. With an immediately invoked named function, the code can be about as simple and clear as with a do or for loop :

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);
})();
于 2013-10-04T11:37:52.127 回答
0

你也可以使用 .delay() 函数

参考http://api.jquery.com/delay/

例如 :

<script>
   $( "button" ).click(function() {  
      $( "div.first").delay( 800);
   });

一旦点击按钮,这里的 div 首先将在 800 毫秒的间隔后加载。

于 2013-10-04T11:39:55.007 回答