-2

我刚刚开始使用 Javascript 和 jQuery,在我的第一个项目中遇到了一些麻烦。我正在构建一个简单的二十一点游戏,它第一次就可以完美运行。

一旦第一手牌结束,游戏应该通过调用递归 playGame() 函数来重置并再次玩一次按钮,#playAgain,被点击。这很好用,但是在执行 playAgain 之后,我的 hitMe 函数会为用户中断。它是一个系统代码,因此用户和 PC 都在执行相同的操作,但它对用户的行为不同,并开始根据玩过的游戏数量以指数方式调用 hitMe 函数。

为什么在这种情况下,根据提供呼叫的用户/计算机,此代码的行为会有所不同,我该如何修复它?

代码可在 www.calebdwilliams.com/blackjack 上找到

4

2 回答 2

3

您的问题在您的 playGame 函数中:

$("#hit").click(function(){

每次玩游戏时,您都会将点击功能连接到#hit 元素。好吧,通过游戏 javascript 的后续时间只是添加了额外的点击处理程序。该处理程序应仅在 playGame() 范围之外添加一次,否则应删除先前的侦听器:

$("#hit").unbind();
于 2012-12-26T21:18:11.313 回答
2

您在方法内绑定事件处理程序playGame

这意味着每次您运行它时,它都会将一个额外的处理程序绑定到您想要的元素。

因此,您需要在使用该方法绑定之前取消绑定..

每当你做.click(...)unbind('click')一个..

$("#stand").unbind('click').click(function(){

$("#hit").unbind('click').click(function(){

$("#playAgain").unbind('click').click(function(){
于 2012-12-26T21:21:38.903 回答