Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击3秒后再次自动单击_Javascript_Jquery - Fatal编程技术网

Javascript 单击3秒后再次自动单击

Javascript 单击3秒后再次自动单击,javascript,jquery,Javascript,Jquery,单击3秒后再次自动单击。你为什么不工作 $(document).on("click", "input[name='submit']", setTimeout(function(){ $(this).trigger('click'); }, 3000)); 我发现您的代码有两个问题: 首先,您正在为回调输入setTimeout。setTimeout返回它生成的计时器的int id。 因此,基本上你现在拥有的是: .on('click', selector, 123); 这显然行不通

单击3秒后再次自动单击。你为什么不工作

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

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

首先,您正在为回调输入setTimeout。setTimeout返回它生成的计时器的int id。 因此,基本上你现在拥有的是:

.on('click', selector, 123);
这显然行不通。
如果希望稍后执行代码,请将setTimeout放在回调中

.on('click', selector, function() {
  setTimeout(myFunc, 3000);
});
然后您的回调在单击时运行,并生成计时器

其次,我假设您希望
这个
在回调中引用单击的对象,而不是
窗口
。。因此,您必须将thisArg传递给setTimeout或在父作用域中定义它。。或者使用不绑定新thisArg的箭头函数。为了简单起见,我建议使用箭头函数

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

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

首先,您正在为回调输入setTimeout。setTimeout返回它生成的计时器的int id。 因此,基本上你现在拥有的是:

.on('click', selector, 123);
这显然行不通。
如果希望稍后执行代码,请将setTimeout放在回调中

.on('click', selector, function() {
  setTimeout(myFunc, 3000);
});
然后您的回调在单击时运行,并生成计时器

其次,我假设您希望
这个
在回调中引用单击的对象,而不是
窗口
。。因此,您必须将thisArg传递给setTimeout或在父作用域中定义它。。或者使用不绑定新thisArg的箭头函数。为了简单起见,我建议使用箭头函数

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

您需要检测哪些单击事件是手动的,哪些是自动的。因此,定义
timer
变量来完成这项工作。如果
timer
等于
false
则表示单击为手动,如果为
true
则表示自动单击

请注意,当调用
setTimeout
回调时,
参考窗口,因此需要存储
为变量(
ele

var定时器=false;
$(文档)。在(“单击”,“输入[name='submit']”上,函数(e){
var ele=这个;
//第一次点击
如果(!计时器){
e、 预防默认值();
$(ele).prop(“已禁用”,真)
setTimeout(函数(){
定时器=真;
$(ele).prop(“禁用”,false).trigger('click');
}, 3000)
//第二次点击
}否则{
控制台日志(“提交表格”);
}
});

您需要检测哪些单击事件是手动的,哪些是自动的。因此,定义
timer
变量来完成这项工作。如果
timer
等于
false
则表示单击为手动,如果为
true
则表示自动单击

请注意,当调用
setTimeout
回调时,
参考窗口,因此需要存储
为变量(
ele

var定时器=false;
$(文档)。在(“单击”,“输入[name='submit']”上,函数(e){
var ele=这个;
//第一次点击
如果(!计时器){
e、 预防默认值();
$(ele).prop(“已禁用”,真)
setTimeout(函数(){
定时器=真;
$(ele).prop(“禁用”,false).trigger('click');
}, 3000)
//第二次点击
}否则{
控制台日志(“提交表格”);
}
});



为什么在超时时间内返回true?单击触发器将永远无法到达为什么
返回true在函数中?这将阻止函数的其余部分执行。setTimeout返回一个id。并以内联方式运行。您在这里看到的是
$(文档)为什么不在3 sek后提交单击?您想每3秒钟自动单击按钮一次或循环一次?为什么在超时时间内返回true?单击触发器将永远无法到达为什么
返回true在函数中?这将阻止函数的其余部分执行。setTimeout返回一个id。并以内联方式运行。您在这里看到的是
$(文档)为什么不在3 sek后提交单击?你想在每3秒钟后自动单击按钮一次或循环?这是必要的,在单击之后,3秒钟过去了,按钮消失了-这对于下载图像的及时性是必要的。我不确定这是一个问题还是一个一般性的解释。但我在这里所解释的将允许您这样做。这是必要的,在点击后,3秒钟过去了,按钮消失了-这是必要的,以便及时下载图像。我不确定这是一个问题还是一个一般性的解释。但我在这里解释的是允许你这么做的。如果第二次点击该道具被禁用,然后点击提交?@php如果你是说用户在3s结束前点击,选中updatedIf可在第一次单击后3秒后发送表单。表单将在3s后发送,并且在显示提交表单控制台消息时不会发送数据,也不会像往常一样重新加载页面,这是成功提交的标志。如果第二次单击该道具被禁用,然后单击提交?@php如果您是指用户在3s结束前单击,选中updatedIf可在第一次单击后3秒后发送表单。表单将在3秒后发送,并且在显示提交表单控制台消息时不会发送数据,也不会像往常一样重新加载页面,这是成功提交的标志。