$('.button').click();
上面的代码非常适合一次单击页面上的所有按钮,但我试图每隔半秒或一秒左右触发一次点击,直到 jQuery 对象循环,即
$(function(){
$('.button').each(function(){
setInterval('$(this).click()', 500);
});
});
有人能告诉我我该怎么做吗?上面的代码显然不起作用。我错过了什么吗?
$('.button').click();
上面的代码非常适合一次单击页面上的所有按钮,但我试图每隔半秒或一秒左右触发一次点击,直到 jQuery 对象循环,即
$(function(){
$('.button').each(function(){
setInterval('$(this).click()', 500);
});
});
有人能告诉我我该怎么做吗?上面的代码显然不起作用。我错过了什么吗?
不要在setInterval()
or中使用字符串setTimeout()
。始终传递函数对象:
$(function() {
$('.button').each(function(){
var button = $(this);
setInterval(function() {button.click();}, 500);
});
});
编辑:如果您只想触发一次点击,这也可以更简单地表示为(感谢 icambron):
$(function() {
$('.button').each(function(){
setInterval($(this).click, 500);
});
});
$(function(){
var buttons = $('.button');
var len = buttons.length;
var intr = new Array();
buttons.each(function(i){
var $this = $(this);
var timeClick = function(){
if(i < len ){
$this.click();
}
else{
clearInterval(intr[i]);
}
};
intr[i] = setInterval(timeClick, 500);
});
});
那这个呢?
setInterval(function(){ $('.button').click();},500);
您可以构建一个函数来按顺序执行点击,每隔N
指定的毫秒超时点击一次,逐个迭代匹配的元素:
用法:
clickQueue($('.button'), 500);
功能:
var clickQueue = function ($els, timeout) {
var n = $els.length, i = 0;
function click () { // internal function
$els.eq(i++).click(); // click the element and increment i
if (i < n){
setTimeout(click, timeout); // execute again if possible
}
}
click(); // invoke for first time
};