jquery如何从循环中停止settimeout

时间:2014-05-06 05:21:38

标签: javascript jquery

我想在我的页面加载后执行一次触发器单击一次。 许多帖子发誓,settimeout只会触发一次,但就我而言,它是无限的! 这是我的众多试验之一。

$( document ).ready(function() {
    setTimeout(function() {
        $("#btn1").trigger('click');
    },1000);
});

我已经尝试将其移动到document.ready之外的函数中,然后添加cleartimeout,但它会停止触发:

$( document ).ready(function() {
    test();
});
function test() {
    var t = setTimeout(function() {
        $("#btn1").first().trigger('click');
    },1000);
    clearTimeout(t);
}

我做错了什么!?

2 个答案:

答案 0 :(得分:0)

使用e.stopPropagation(),这可能是因为事件冒泡。

<强> HTML

<button id="btn1">my button</button>

<强> JS

$( document ).ready(function() {
    setTimeout(function() {
        $("#btn1").trigger('click');
    },1000);

  $("#btn1").click(function(e){
    console.log('clicked');
    e.stopPropagation();
    console.log(e);
  })
});

CODE

答案 1 :(得分:0)

在setTimeout()中使用clearTimeout()。它会在触发点击后清除超时

$(document).ready(function() {
 test();
});
function test() {
  var t = setTimeout(function() {
  $("#btn1").trigger('click');
  clearTimeout(t);
 }, 1000);
}
$("#btn1").on('click',function(){
 console.log("Clicked");
});

小提琴:http://jsfiddle.net/6G4pR/