JQuery Auto Click

时间:2013-04-10 09:54:03

标签: javascript jquery

我有问题,我有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>

任何人都可以帮助我吗?

5 个答案:

答案 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)

使用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

检查你的控制台是否有小提琴示例