1

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

var loaded = 0;

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

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

5 回答 5

1

这应该有望按预期运行:

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

希望有帮助。

于 2013-03-06T15:47:52.690 回答
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 示例

于 2013-03-06T15:45:42.110 回答
0

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

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

   }
});
于 2013-03-06T15:45:58.487 回答
0

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

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

      }
   });
于 2013-03-06T15:46:18.803 回答
0

该语句只执行第一次if,之后进入on()方法并将函数绑定#button到您应该将代码更改为:elseloaded

$('body').on('click', '#button', function(){
if (loaded == 0) {
  alert(loaded);
loaded += 1;
  } else {
alert(loaded + 'yay its not 0');
  }
});
于 2013-03-06T15:46:18.833 回答