2013-04-10 88 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); 
})