如何在setInterval函数中单击div

时间:2015-02-26 19:57:37

标签: javascript jquery html

当用户点击一个正方形(div)

时,我编写了这段代码来计算
var run = false;
$(document).on('click', function(){
  if(run) return;
  run = true;
  setInterval(function(){
    $("#div").removeClass();
    $("#div").addClass("square").clone().appendTo("#container");
    $(".square").click(function(){
      $('#score').html(function(x, val) { return val*1+1 })
    })
  },2000)
})

但问题是,当我再次点击一个正方形时,它会为屏幕上的每个div添加一个,我只想添加一个点。

以下是行动:http://jsfiddle.net/gwxfvesn/

我该如何解决?

1 个答案:

答案 0 :(得分:1)

这是因为,当你使用setInterval时,你(重新)将click事件监听器添加到每个方块,而不仅仅是新的方块。

创建元素时,只需链接.click,以便它仅适用于该元素:

setInterval(function(){
    $("#div").removeClass();
    $("#div").addClass("square").clone().appendTo("#container")
      .click(function(){
        $('#score').html(function(x, val) { return val*1+1 })
    })
},2000)

jsFiddle:http://jsfiddle.net/theonlygusti/gwxfvesn/7/

您需要将点击侦听器添加到新元素。