0

我有一个问题,我有 3 个按钮,可以说它被称为#pos1、#pos2 和 #pos3。我想让它在 2 秒内自动单击 #pos1 按钮,然后在 2 秒后单击 #pos2 ,再在 2 秒后单击 #pos3 ,然后再在 2 秒内 返回到 #pos1 ,依此类推。

HTML

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

任何人都可以帮助我吗?

4

5 回答 5

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);
})
于 2013-04-10T10:09:25.247 回答
0

如果我理解你的问题是正确的,你需要按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);
}

这是相当多的错误,但会解决你的问题。

于 2013-04-10T10:05:04.847 回答
0

好吧,我不知道您已经拥有什么,但从技术上讲,它可以通过 triggerHandler() 完成

var currentPos = 1,
    posCount   = 3; 

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

window.setInterval(autoclick,2000);
于 2013-04-10T10:04:32.407 回答
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);

在这里摆弄

检查您的控制台以获取小提琴示例

于 2013-04-10T10:08:30.610 回答
0
var posArray = ["#pos1", "#pos2", "#pos3"];
var counter = 0;

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

这应该可以解决问题,尽管您没有提及何时希望它停止运行。

于 2013-04-10T10:03:21.440 回答