jQuery中if-else语句无法修改变量问题求助
问题分析与解决方案
嘿,我一眼就看出问题出在哪啦!你的代码逻辑有个小误区——页面加载时只会执行一次那个if-else判断,这就导致后续的状态变化根本不会触发事件绑定的更新。
原代码的问题
你看,页面初始化时clicked是false,所以只会执行if (!clicked)里的代码,给#click绑定了第一个点击事件。哪怕之后点击元素把clicked改成true,else分支的代码再也不会跑一遍,自然不会绑定第二个事件处理函数。所以不管点多少次,永远只会弹出clicked,你就误以为clicked变量没变成true,其实它已经变了,只是没有对应的事件逻辑而已。
修正后的代码
把判断逻辑放到点击事件的处理函数里,这样每次点击都会检查当前clicked的状态:
var clicked = false; $('#click').on('click', function(){ if (!clicked) { alert('clicked'); clicked = true; } else { alert('clicked again'); } });
为什么这样可行?
这个写法会在每次点击元素时,实时判断clicked的状态,根据状态执行不同的弹窗逻辑,完美解决了你之前的问题。如果之后你需要更复杂的逻辑(比如点击一次后解绑原事件),也可以用off()方法,但这个方案是最直接简单的。
内容的提问来源于stack exchange,提问作者Jiroscopes
相关产品推荐
相关产品推荐

