jQuery两个if语句用于1个变量,但仅适用于一个变量

时间:2013-01-11 11:27:20

标签: jquery variables if-statement return

让我试着解释一下我想要完成的事情。我想制作一个记忆难题,但我很难用变量,if语句和返回。

请你看一下我的例子,然后在块上点击三到四次。我想在变量== 1时添加一些动作,在变量== 2时添加其他动作。 但正如你所看到的,这不会起作用,因为它一次跳过警报1 ...... 这是return()的问题吗?我相信,但我希望你能解释我如何解决这个问题,以及它是否与回归有关。

Example JSFIDDLE

HTML

<div id="container">
  <div class="coverup">
    <div class="hoverdiv"></div>
    <div class="image_A"></div>
  </div>
  <div class="coverup">
    <div class="hoverdiv"></div>
    <div class="image_B"></div>
  </div>
  <div class="coverup">
    <div class="hoverdiv"></div>
    <div class="image_A"></div>
  </div>
  <div class="coverup">
    <div class="hoverdiv"></div>
    <div class="image_B"></div>
  </div>
</div>

JS

var amountofclicks = 0;

$('.coverup').bind("click", function (event) {

  if (amountofclicks < 2) {
    $(this).find('.letter').show();
    amountofclicks++;

    if (amountofclicks == 2) {
      alert('2');
    }
    if (amountofclicks == 1) {
      alert('1');
    }
    $(this).children().show();


  } else {
    $('.coverup').children().hide();
    $(this).children().show();
    amountofclicks = 1;
    return;
  }


});

3 个答案:

答案 0 :(得分:2)

您最后应将ammountofclicks设置为零。此外还有比需要更多的ifs。只有当瓷砖尚未显示或ammountofclicks为零时,该功能才会运行,因此在开始时还会再检查一次。

var amountofclicks = 0;

$('.coverup').bind("click", function (event) {
  if (amountofclicks==0 || !$(this).children().is(":visible")) {
    amountofclicks++;
    if (amountofclicks == 1) {
      $('.coverup').children().hide();
    }
    $(this).find('.letter').show();
    $(this).children().show();
    alert(amountofclicks);
    if (amountofclicks == 2) {
      amountofclicks = 0;
    }
  }
});

答案 1 :(得分:0)

if-clause

if (amountofclicks == 2) { ... }
永远无法达到

,因为它位于以下if子句

if (amountofclicks < 2) { ... }

更详细......

var amountofclicks = 2;

if (amountofclicks < 2) {
    // go here if amountofclicks < 2
    if (amountofclicks == 1) {
        // go here if amountofclicks == 1
    }
    if (amountofclicks == 2) {
        // unreachable, because amountofclicks is always < 2
    }
} else {
    // go here if amountofclicks >= 2
}

答案 2 :(得分:0)

试试这个

var amountofclicks = 0;

$('.coverup').bind("click", function (event) {

  if (amountofclicks <= 2) {
    $(this).find('.letter').show();


    if (amountofclicks == 2) {
      alert('2');
    }
    if (amountofclicks == 1) {
      alert('1');
    }
    amountofclicks++;
    $(this).children().show();


  } else {
    $('.coverup').children().hide();
    $(this).children().show();
    amountofclicks = 1;
    return;
  }


});