如何计算 setInterval 函数中单击时的 div

How to count divs on click in setInterval function

我写这段代码是为了计算用户点击方块的时间 (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/

我该如何解决?

这是因为,当您使用 setInterval 时,您(重新)将点击事件侦听器添加到 每个 方块,而不仅仅是新方块。

当您创建一个元素时,只需链接 .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/

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