【问题标题】:javascript click event :click once trigger twice callback function?javascript点击事件:点击一次触发两次回调函数?
【发布时间】:2017-06-08 05:43:43
【问题描述】:

根据 FCC 项目 (here),我目前正在构建一个“simons 游戏”。 在我的第一个版本(不是全功能)demo中,我发现了一个奇怪的bug,每次点击按钮(彩色的div)一次,回调函数“startAnswer”会被调用两次,所以游戏不能正常玩,在这里是我在 CodePen.io 的代码。 my code:https://codepen.io/NxDon/pen/eRpRra

这里是关于我的代码如何工作的注释:

  1. 我通过 new GameConstructor(第 99 行)创建了一个游戏对象;

  2. 我将回调函数绑定到“开始”和“严格”按钮。

  3. 当玩家点击“开始”按钮时,将调用回调函数“startGame”(第17行),它会初始化一些参数,并显示答案供玩家重复;
  4. 当显示结束时,我单击四个环形区域之一(我称之为按钮),以匹配答案。环形区域在游戏开始阶段已经将它的点击事件与回调函数“startAnswer(line 55)”绑定了,我的直觉是如果我点击环形区域一次,回调函数会调用一次,而是连续调用startAnswer两次。那部分让我感到困惑。感谢您的帮助。

【问题讨论】:

  • 您的代码非常大,因此请在此处提及您单击的是哪个按钮以及它对回调函数“startAnswer”的调用两次,以便更清楚。
  • @BibhudattaSahoo 感谢您的提示,我已经为我的代码添加了一些摘要,重点是我单击了一个环形区域一次,但调用了两次回调函数“answerStart”不管是什么原因。

标签: javascript jquery


【解决方案1】:

按钮的侦听器不止 1 个,

$(id).off('click');//removes past listeners
$(id).click(function(){
    startAnswer();
});

https://codepen.io/smsbhatt/pen/yXYPWW

【讨论】:

  • 你说得对,每次进入新关卡,我新的click handler都会绑定到div上,谢谢。
  • 您的 setClickable 函数会触发多次。
  • 按你的要求制作,我没看懂你的游戏策略。
  • 希望对您有所帮助。
  • 确实有很大帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多