当用户点击一个正方形(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/
我该如何解决?
答案 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/
您需要将点击侦听器仅添加到新元素。