麻烦点击不解绑

问题描述:

我正在构建一个小冒险,以帮助我理解JQuery/Javascript的一些概念,并且我遇到了一些障碍。麻烦点击不解绑

我想要做的是通过点击“获取”按钮,然后在屏幕上的项目将其移动到清单。好消息是,所有的作品。坏消息是,如果我先按下另一个项目而不先使用“take”按钮,它会直接进入我的库存。

与“看”相同的问题。您应该首先按下“外观”,然后再按下该项目才能获得描述,但一旦按下,它会立即为每个项目点击描述。

你可以想象,一旦你点击了每一个你点击的物品而没有点击另一个按钮,它会给你一个描述,并直接在你的库存中结束。

这是我正在努力得到它的解除绑定:

$("#take").click(function() { 
    $("#zilverenKogel").click(function() { 
     $("#zilverenKogel").fadeOut(1200, 0); 
     $("#invKogel").fadeTo(1500, 1); 
     $("#take").unbind("click"); 

任何帮助将不胜感激!

Mofx为我解决了它。结束和工作结果是:

var state = null; 
$("#take").click(function() {state = "take";}) 
$("#look").click(function() {state = "look";}) 


$("#zilverenKogel").click(function() { 
    if (state == "take") { 
     $("#zilverenKogel").fadeOut(1200, 0); 
     $("#invKogel").fadeTo(1500, 1); 
     state=null; 
    } else if (state == "look") { 
     alert("blablabla"); 
     state=null; 
    } 

}); 

非常感谢Mofx!

+0

这不解除绑定你在控制台有错误 – 2013-05-10 13:50:43

+0

您是否尝试过使用和关闭功能? – 2013-05-10 13:53:04

+0

对我来说似乎很好http://jsfiddle.net/arunpjohny/kQQ3x/1/ – 2013-05-10 13:55:07

您解除了错误的事件。你想解除“#zilverenKogel”上的事件,因为那是做“采取行动”的。我也怀疑,你将事件连接到其他元素以及“$(”#take“)。click(function(){”。你将不得不全部断开它们。在采取行动或其他行动后选择

也许的statemachine会在这里更好的解决方案是这样的:。。?

var state = null; 
$("#take").click(function() {state = "take";} 
$("#look").click(function() {state = "look";} 

$("#zilverenKogel").click(function() { 
    if (state == "take") { 
    moveToInventory(); 
    } else if (state == "look") { 
    showDescription(); 
    } 
} 
+0

使用状态*通常是要走的路,比绑定和解除绑定更好,+1。 – 2013-05-10 14:08:08

+0

啊,是的,这可能就是我刚刚改变#zilverenKogel时不工作的原因。 – Timsalabim 2013-05-10 14:09:09

+0

该状态解决方案看起来好像更好。我要实现这一点,看看我能否实现它。将让你知道这是如何解决我的。 – Timsalabim 2013-05-10 14:11:18