我有问题,我有3个按钮,可以说它是#pos1,#pos2和#pos3 。 我想让它在2秒内自动点击#pos1按钮,之后再过2秒后再点击#pos2,再过2秒后再点击#pos3 之后在另外2秒内回到#pos1,依此类推jQuery。
HTML
<button id="pos1">Pos1</button>
<button id="pos2">Pos2</button>
<button id="pos3">Pos3</button>
任何人都可以帮助我吗?
答案 0 :(得分:1)
尝试
$(function() {
var timeout;
var count = $('button[id^=pos]').length;
$('button[id^=pos]').click(function() {
var $this = $(this);
var id = $this.attr('id');
var next = parseInt(id.substring(4), 10) + 1;
if( next >= count ){
next = 1
}
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function() {
$('#pos' + next).trigger('click');
}, 2000);
})
timeout = setTimeout(function() {
$('#pos1').trigger('click');
}, 2000);
})
答案 1 :(得分:0)
var posArray = ["#pos1", "#pos2", "#pos3"];
var counter = 0;
setInterval(function() {
$(posArray[counter]).triggerHandler('click');
counter = ((counter<2) ? counter+1 : 0);
}, 2000);
这应该可以解决问题,但你没有提到什么时候你想让它停止运行。
答案 2 :(得分:0)
嗯,我不知道你已经拥有什么但技术上可以通过triggerHandler()来完成
var currentPos = 1,
posCount = 3;
autoclick = function() {
$('#pos'+currentPos).triggerHandler('click');
currentPos++;
if(currentPos > posCount) { currentPos = 1; }
};
window.setInterval(autoclick,2000);
答案 3 :(得分:0)
如果我理解你的问题,你需要按照 pos1&gt; pos2&gt; pos3&gt; pos1&gt; pos2 的顺序连续循环点击,依此类推。如果这是你想要的,你可以使用jQuery window.setTimeout
。代码将是这样的:
window.setTimeout(performClick, 2000);
var nextClick = 1;
function performClick() {
if(nextClick == 1)
{
$("#pos1").trigger("click");
nextClick = 2;
}
else if(nextClick==2)
{
$("#pos2").trigger("click");
nextClick = 3;
}
else if(nextClick == 3)
{
$("#pos3").trigger("click");
nextClick = 1;
}
window.setTimeout(performClick, 2000);
}
这很麻烦但会解决你的问题。
答案 4 :(得分:0)
重复调用函数或执行代码片段,每次调用该函数之间都有固定的时间延迟。
var tempArray = ["pos1", "pos2", "pos3"]; //create an array to loop through
var arrayCounter = 0;
setInterval(function() {
$('#' + tempArray[arrayCounter ]).trigger('click');
arrayCounter = arrayCounter <2 ? arrayCounter +1 : 0;
}, 2000);
检查你的控制台是否有小提琴示例