我正在使用一个one()事件处理程序,该事件处理程序应该(我被认为是)在单击时触发一次代码,但在单击一次后不再执行它。在这里,它检查一个类是否可见,如果有,则将10加到变量中。但问题是我可以多次单击它,并且一直在变量中添加10。
难道我做错了什么?
$('.cme-confirm').one( "click", function(event) {
if ($(".this-correct")[0]){
case1Score = case1Score + 10;
}
event.stopImmediatePropagation();
console.log(case1Score);
});
提前致谢。
编辑
感谢Richard Cane解释说,这是因为我有多个具有类名的元素。因此,它发射了不止一次。我打算为每个元素分配一个唯一的类,但是Ruben Seratte在下面解决了我的问题。非常感谢大家的帮助。
最佳答案
现在,您知道发生这种情况的原因,而不是为元素提供唯一的类,而是可以在事件触发后停止监听该事件,从而解决此问题:
$('.cme-confirm').on( "click.myId", function(event) {
jQuery('.cme-confirm').off("click.myId");
if ($(".this-correct")[0]){
case1Score = case1Score + 10;
}
event.stopImmediatePropagation();
console.log(case1Score);
});