您想要的是防止可怕的点击事件堆叠。有不同的处理方式,但基本上它们都归结为设置布尔值。
在您的示例中,我为您的 #choices 容器设置了一个 data() 标记,并以 value 开头false
。单击后,我将布尔值更改为true
. 基本上,如果processing=false
我在点击回调中执行代码。
$("#choices").data('processing', false);
$("#rock").click(function () {
if (!$(this).parent().data('processing')) {
$(this).parent().data('processing', true);
user = roPaSc[0];
gamePlay();
}
});
$("#paper").click(function () {
if (!$(this).parent().data('processing')) {
$(this).parent().data('processing', true);
user = roPaSc[1];
gamePlay();
}
});
$("#scissors").click(function () {
if (!$(this).parent().data('processing')) {
$(this).parent().data('processing', true);
user = roPaSc[2];
gamePlay();
}
});
动画结束后,需要重置布尔值。我在“else-statement”中的 openEyes 函数中执行此操作。
else {
$("#you").attr({
'src': user
});
$("#computer").attr({
'src': com
});
$("#choices").data('processing', false);
}
这是“石头剪刀布”的调整小提琴:http: //jsfiddle.net/gpxxn/2/