全局变量更新不会触发jquery中的if / else语句

时间:2013-03-06 15:43:35

标签: jquery if-statement

请参阅下面的示例,基本上我希望它在第一次单击时执行,然后对所有后续单击执行else语句,但即使变量正在更新,它也不会切换到其他,例如,如果警告消息是说变量现在是三,它仍然没有去别的。我猜这是一个范围问题,但我如何解决它 - 任何人都可以提出建议吗?

var loaded = 0;

if (loaded == 0) {
$('body').on('click', '#button', function(){
alert(loaded);
loaded += 1;
});

} else {
alert(loaded + 'yay its not 0');
};

5 个答案:

答案 0 :(得分:1)

这应该有希望的行为:

$(document).ready(function() {
    var clicked = false;
    $('body').click(function() { 
        if(clicked) {
            alert("Already clicked");
        } else {
            alert("Not clicked yet");
            clicked = true;
        }
    });
});

希望有所帮助。

答案 1 :(得分:0)

你的if条件只运行一次。尝试将支票放入点击事件中:

var loaded = 0;
$('body').on('click', '#button', function () {
    if (loaded == 0) {
        alert(loaded);
        loaded += 1;
    } else {
        alert(loaded + 'yay its not 0');
    };
});

<强> jsFiddle example

答案 2 :(得分:0)

除非您使用.one或在事后手动调用.off,否则事件一旦运行就不会像它一样运行 - 但即便如此,您的检查只会在脚本加载时执行一次,而不是当点击发生时。您需要处理事件处理程序中的if / else。

var loaded = 0;
$('body').on('click', '#button', function(){
   if(loaded === 0) {
      alert(loaded);
      loaded += 1;
   } else {

   }
});

答案 3 :(得分:0)

将您的支票放入点击处理程序中:

  $('body').on('click', '#button', function(){
      if(loaded == 0){
          alert(loaded);
          loaded += 1;
      }
      else{
         alert(loaded + 'yay its not 0');

      }
   });

答案 4 :(得分:0)

if语句仅在第一次执行,之后您输入on()方法并将函数绑定到#button,但之后没有其他评估,在这种情况下它如果else的初始值不为0,则只会转到loaded部分,因此您应将代码更改为:

$('body').on('click', '#button', function(){
if (loaded == 0) {
  alert(loaded);
loaded += 1;
  } else {
alert(loaded + 'yay its not 0');
  }
});