请参阅下面的示例,基本上我希望它在第一次单击时执行,然后对所有后续单击执行else语句,但即使变量正在更新,它也不会切换到其他,例如,如果警告消息是说变量现在是三,它仍然没有去别的。我猜这是一个范围问题,但我如何解决它 - 任何人都可以提出建议吗?
var loaded = 0;
if (loaded == 0) {
$('body').on('click', '#button', function(){
alert(loaded);
loaded += 1;
});
} else {
alert(loaded + 'yay its not 0');
};
答案 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');
}
});