单击而不解除绑定的麻烦

时间:2013-05-10 13:48:57

标签: javascript jquery

我正在构建一个小冒险来帮助我理解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!

1 个答案:

答案 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();
  }
}