我有此页面,显示一次按钮列表,至少一次显示一百个,我想要一些jQuery代码以5到3秒的间隔一次单击所有这些按钮,以下是查询I写道,但它只单击了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();
}
})
});
答案 0 :(得分:2)
要完成这项工作,您可以遍历按钮,并在每个按钮上附加一个超时,以触发自己的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>
请注意each()
处理程序中的IIFE表达式。这是维持延迟最终执行时要单击的button
范围的必需条件。
还请注意,这使用了3秒的间隔(3000
值),但是如果需要,可以很容易地将其更改为5秒,因为对此您的问题尚不清楚。
答案 1 :(得分:0)
替换您的代码,
for(var i=0; i<numberOfButtons; i++){
generateButtons[i].click();
}
写那个循环,有些超时,像:
generateButtons.each(function(i) {
(function(item, index) {
setTimeout(function() {
$(item).click();
}, 3000 * (index + 1));
})(this, i);