2013-04-10 49 views
0

我有一个问题,我有3个按钮让我们说它叫做#pos1,#pos2和#pos3。 我想让在2秒内自动点击#pos1按钮,然后在另外2秒后点击#pos2,再过2秒后再点击#pos3, 之后再在2秒后回到#pos1通过jQuery。JQuery Auto Click

HTML

<button id="pos1">Pos1</button> 
<button id="pos2">Pos2</button> 
<button id="pos3">Pos3</button> 

任何人都可以帮我吗?

+0

何处是你的代码?你已经尝试了什么? – Christoph 2013-04-10 09:54:45

+0

有没有尝试过自己? – Raman 2013-04-10 09:55:54

+1

jQuery [trigger()](http://api.jquery.com/trigger/)? '(“#pos2”)。delay(2000).trigger(“click”);' – 2013-04-10 09:56:38

回答

0
var posArray = ["#pos1", "#pos2", "#pos3"]; 
var counter = 0; 

setInterval(function() { 
    $(posArray[counter]).triggerHandler('click'); 
    counter = ((counter<2) ? counter+1 : 0); 
}, 2000); 

这应该做的伎俩,虽然你没有提到当你想要它停止运行。

+0

感谢您的回答,我会尽力 – 2013-04-10 10:04:54

0

好吧,我不知道你已经有了,但在技术上它可以通过triggerHandler()来完成

var currentPos = 1, 
    posCount = 3; 

autoclick = function() { 
    $('#pos'+currentPos).triggerHandler('click'); 
    currentPos++; 
    if(currentPos > posCount) { currentPos = 1; } 
}; 

window.setInterval(autoclick,2000); 
0

如果我明白你的问题的权利,你需要在一个连续的循环进行点击order pos1> pos2> pos3> pos1> 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); 
} 

这是相当多的错误,但将解决您的问题。

0

使用setInterval()

,调用一个函数或反复执行一个代码段,其中每个调用该函数之间的固定的时间延迟。

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); 

fiddle here

检查您的提琴例如

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); 
})