jquery - 以给定的时间间隔单击页面上的所有按钮
问题描述
我有一个显示按钮列表的页面,一次至少有一百个,我想要一些 jQuery 代码,例如以 5 3 秒的间隔一个一个地单击所有这些按钮,下面是我写的查询,但是它只点击 3 到 4 个按钮然后切断
$(document).ready(function(e) {
$(".generate_all").click(function(e){
var generateButtons = $('.generate');
var numberOfButtons = generateButtons.length;
for(var i=0; i<numberOfButtons; i++){
generateButtons[i].click();
}
})
});
解决方案
为了完成这项工作,您可以循环访问按钮,并为每个按钮附加超时,从而触发其自己的click
事件处理程序。您可以通过将延迟乘以元素的索引来抵消这些超时,如下所示:
$('button').click(function() {
console.log($(this).index());
}).each(function(i) {
(function(el, index) {
setTimeout(function() {
$(el).click();
}, 3000 * (index + 1));
})(this, i);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<button>0</button>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
</div>
注意处理程序中的 IIFE 表达式each()
。button
这是在延迟最终执行时保持要单击的范围所必需的。
另请注意,这使用 3 秒间隔(3000
值),但如果需要,可以轻松更改为 5 秒,因为您的问题在这方面不清楚。
推荐阅读
- matlab - 如何在 Mac 上运行 .mexw64 文件?
- symfony - 在 Symfony 中按“问题”类别显示用户表单
- vue.js - 是否可以使用 for 循环内部函数生成 vue 组件?
- laravel - 我想将原始查询转换为查询生成器
- java - JavaFX Canvas 始终在同一位置绘制
- list - Flutter使用地图比较2个对象列表并包含不起作用
- node.js - 升级根目录下的 yarn 不会升级 Workspace 依赖
- python - 为什么从 OpenGL Superbible 第 6 版、第 7 版的 spincube 示例的 python 代码中没有出现立方体
- facebook - 在 Facebook 浏览器中更新 Service Worker
- azure - 获取受保护的 Azure ADv2 Rest Api 的令牌