0

让我们将有问题的 2 个 div 称为 div1 和 div2。

我想要做的是使用回车键来显示 div1 并隐藏 div2(如果 div2 当前可见),反之亦然。现在我有了代码,这样按回车键将显示 div1 并隐藏 div2,但要返回显示 div2 并隐藏 div1,您必须使用 shift 键。它现在的工作方式,但我想要它,所以每次我希望 div 交替时我只需要按 Enter 键。

这是javascript代码

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    var keys = [];
    var code = [13];
    var keys1=[];
    var code1 = [16];
    $(document).keydown(function(keyEvent) {
      keys.push(keyEvent.keyCode);
      keys1.push(keyEvent.keyCode);
      if ( keys.length > code.length ) {
        keys.shift();
      }
      if ( keys1.length > code1.length ) {
        keys1.shift();
      }
      if ( keys.toString() == code.toString() ) {
        showAns();
      }
      if ( keys1.toString() == code1.toString() ) {
        hideAns();
      }

    });
  });
</script>

知道如何完成我的要求吗?

4

3 回答 3

0

我会给你一个正确的方向,但不会直接为你提供答案。

您需要找到一种方法来检查元素可见性的属性(如何检查元素是否隐藏在 jQuery 中?这可能会对您有所帮助!),并将其添加到您的条件中,如下所示:

if(KeyIsPressed && element.IsVisible)
{
HideElement
}
else if(KeyisPressed)
{
ShowElement
}
于 2013-11-15T06:00:17.437 回答
0

不用太花哨,您可以使用“状态”变量来保存该信息,然后将其同步到 DOM:

var state = {
  "div1": true,
  "div2": false,
};

synchronizeState();

$(document).on("keydown", function(event) {
  if(event.which === 13) {
    state.div1 = !state.div1;
    state.div2 = !state.div2;
    synchronizeState();
  }
});

function synchronizeState() {
  if(state.div1) {
    $("#div1").show();
  } else {
    $("#div1").hide();
  }

  if(state.div2) {
    $("#div2").show();
  } else {
    $("#div2").hide();
  }
}

工作示例:http: //jsbin.com/eJiPavO/1/

于 2013-11-15T06:03:05.210 回答
0

试试这个你想要实现的样本:

var toShow = true;
$(document).keydown(function(keyEvent) {
    if(keyEvent.keyCode == 13){
            $('#div1').toggle(toShow);
            $('#div2').toggle(!toShow);
        toShow = !toShow;
    }
});
于 2013-11-15T06:07:04.817 回答