单击事件在循环中多次触发

时间:2011-07-09 07:29:01

标签: javascript jquery events

我在loop.it中触发click事件多次触发。 我怎么能停止多次射击。

我的代码: -

var myArray = [1,2,3,4,5,6];

var i;
for(i=0;i<myArray.length;i++){
 $(".Mydiv").click(function(){

alert(myArray[i]);

});
}

只是示例代码。

实际上,我正在使用jQuery attr更新每秒Mydiv attr id以获取当前用户。 所以当我点击mydiv时,我应该只获得当前的用户ID。但我发火了。

由于

3 个答案:

答案 0 :(得分:2)

如果我理解你,这就是解决方案:

  var myArray = [1,2,3,4,5,6];

  var i = 0;
  $(".Mydiv").click(function(){
     alert(myArray[i]);
     if(i < myArray.length-1) i++;
  });

希望这会有所帮助。干杯

答案 1 :(得分:0)

您无法使用.click()在循环中触发事件,它会将处理程序绑定到为选择器找到的元素或元素的事件。要触发点击,请使用.trigger()

但是为了访问被点击元素的属性,你需要的是:

 $(".Mydiv").click(function(){

alert($(this).attr('id'));

});

当你绑定到类中的所有元素时,$(this)意味着你只对被点击的元素起作用。

答案 2 :(得分:0)

在原始代码中,它绑定click事件myArray.length次,你只需要绑定一次。

所以你可以这样做:

var myArray = [1,2,3,4,5,6];
var i = 0;
 $(".Mydiv").click(function(){
    alert(myArray[i]);
   //here change the i
    i = (i+1)%length ;
 });