首页 > 解决方案 > 点击后 3 秒后再次自动点击

问题描述

点击后 3 秒后再次自动点击。为什么不工作?

$(document).on("click", "input[name='submit']", setTimeout(function(){
      $(this).trigger('click');
}, 3000));

标签: javascriptjquery

解决方案


我发现您的代码有两个问题:

首先,您将 setTimeout 放入回调中。setTimeout 为其生成的计时器返回一个 int id。所以基本上你现在拥有的是:

.on('click', selector, 123);

这显然行不通。
如果您希望您的代码稍后执行,请将 setTimeout放在回调中。

.on('click', selector, function() {
  setTimeout(myFunc, 3000);
});

然后你的回调在点击时运行,并产生计时器。

其次,我假设您希望this在回调内部引用单击的对象,而不是window.. 所以您必须将 thisArg 传递给 setTimeout 或在父范围中定义它.. 或使用不绑定的箭头函数一个新的 thisArg。为简单起见,我建议使用箭头函数。

setTimeout( () => {
  $(this).trigger('click');
}, 3000);

推荐阅读