如何计算 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/
您需要将点击侦听器仅添加到新元素。
我写这段代码是为了计算用户点击方块的时间 (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/
您需要将点击侦听器仅添加到新元素。