变量总是计算为 false

Variable always evaluates to false

我正在学习 jQuery,我只是在测试事件和条件的工作原理。我还使用 Velocity.js 进行动画处理。这是代码:

$(function() {

$( "#navBar" ).click(function() {
    var isOpen = false;
      if (isOpen == false){
       $( this ).velocity({ height: 300});
          isOpen = true;
          console.log(isOpen);
          return false;
      }
      else{
       $( this ).velocity({ height: 50});
          isOpen = false;
          console.log(isOpen);
      }

   });

});

我不知道为什么这不起作用。 if 条件 得到执行并记录到控制台变量为真。但是在第二次点击后保持 运行 if 条件并返回 isOpen true。我无法执行 else 语句。

因为每次 isOpen = false; 因为你在 click 中声明它。所以把它放在 click event 外面,如下所示:

$(function() {
   var isOpen = false; //this here
   $( "#navBar" ).click(function() {
      if (isOpen == false){
          $( this ).velocity({ height: 300});
          isOpen = true;
          console.log(isOpen);
          return false;
      }
      else{
          $( this ).velocity({ height: 50});
          isOpen = false;
          console.log(isOpen);
      }
   });
});

在单击处理程序外部声明 isOpen,因为将其放在处理程序内部将使它始终 false

var isOpen = false;

$( "#navBar" ).click(function() {

      if (isOpen == false){
       $( this ).velocity({ height: 300});
          isOpen = true;
          console.log(isOpen);
          return false;
      }
      else{
       $( this ).velocity({ height: 50});
          isOpen = false;
          console.log(isOpen);
      }

   });

});