Jquery如何阻止settimeout循环

jquery how to stop settimeout from looping

本文关键字:循环 settimeout 何阻止 Jquery      更新时间:2023-09-26

我想在我的页面加载后做一个触发点击一次,只有一次。许多帖子发誓settimeout只触发一次,但在我的情况下,它是无限的!这是我众多试验中的一个。

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

我已经尝试将其移动到文档外部的函数中。准备好了,然后添加了clearartimeout,但是它完全停止了触发:

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

我做错了什么!?

在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/

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

<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);
  })
});
代码