我正在构建一个小冒险来帮助我理解JQuery / Javascript的一些概念,我遇到了麻烦。
我要做的是点击“获取”按钮,然后点击屏幕上的项目,将其移至库存。好消息是,一切正常。坏消息是,如果我先按下另一个项目而不使用“获取”按钮,它会直接进入我的库存。
“看”的问题相同。您必须首先按“查看”,然后按项目才能获得描述,但是一旦按下它,它将立即为您点击描述的每个项目。
你可以想象,一旦你按下它们,你点击的每一个项目都不会点击另一个按钮,它会给你一个描述并立即进入你的库存。
这就是我试图让它解除绑定的方式:
$("#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 :(得分:3)
你解开了错误的事件。你想解开“#zilverenKogel”上的事件,因为那是“采取行动”的人。
我还怀疑,你在“$(”#take“)中将事件连接到其他元素。单击(function(){”。你必须将它们全部断开。在采取行动或其他行动之后地选择。
也许一个状态机在这里会是一个更好的解决方案。类似的东西:
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();
}
}