我刚刚开始使用Javascript和jQuery,并且在我的第一个项目上遇到了一些麻烦。我正在构建一个简单的二十一点游戏,它第一次完美运行。
一旦第一手牌结束,一旦点击了一个按钮#playAgain,游戏就应该通过调用递归的playGame()函数重置并再次播放。这工作正常,但在执行playAgain后,我的hitMe函数会中断用户。它是一个系统的代码,因此用户和PC都在执行相同的操作,但它对用户的行为不同,并开始根据播放的游戏数量以指数方式调用hitMe函数。
为什么这个代码在这种情况下的行为会有所不同,这取决于提供呼叫的用户/计算机,我该如何解决?
该代码可在www.calebdwilliams.com/blackjack
找到答案 0 :(得分:3)
你的问题出在你的playGame函数中:
$("#hit").click(function(){
每次玩游戏时,您都会将点击功能连接到#hit元素。那么,通过游戏javascript的后续时间只是添加额外的点击处理程序。应该只在playGame()范围之外添加一次,否则应该删除以前的侦听器:
$("#hit").unbind();
答案 1 :(得分:2)
您可以在playGame
方法中绑定事件处理程序。
这意味着每次运行它都会将其他处理程序绑定到您想要的元素上。
所以你需要在该方法绑定之前取消绑定..
每当你.click(...)
做unbind('click')
时,首先......
$("#stand").unbind('click').click(function(){
和
$("#hit").unbind('click').click(function(){
和
$("#playAgain").unbind('click').click(function(){