我正在使用一个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);
});

10-07 13:46