Jquery 单击更改布尔值
我试图在单击时将变量从false更改为trueJquery 单击更改布尔值,jquery,scope,Jquery,Scope,我试图在单击时将变量从false更改为true var $popupStatus = false; $('li a').click(function() { console.log('The list item has been clicked'); // This console log is successful $popupStatus = true; }); if($popupStatus) { console.log('The popup variable is t
var $popupStatus = false;
$('li a').click(function() {
console.log('The list item has been clicked'); // This console log is successful
$popupStatus = true;
});
if($popupStatus) {
console.log('The popup variable is true;'); // This console log doesn't show up
}
我知道这一定与作用域有关,但我看不出哪里出了问题,谢谢你的帮助。问题是
$popupStatus
只有在执行单击处理程序时才会更改为false
,而在解析js时,单击处理程序尚未触发
当遇到if()
时,$popupStatus
仍然是false
,因此if
没有成功
尝试触发事件:
$('li a').click(function() {
console.log('The list item has been clicked'); // This console log is successful
$popupStatus = true;
}).trigger('click');
或者根据您尝试执行的操作,将if
条件放入处理程序中 - 变量的作用域是正确的,但要在单击时检查状态,
条件应该在处理程序或函数中;单击时将调用if()
- 如果只需将
添加到If()
,$(document).ready
将始终保持为false$popupstats
- 要验证布尔更改,应在单击时或单击处理程序工作后使用
进行检查if()
试试这个
var $popupStatus = false;
$('li a').click(function(event) {
event.preventDefault();
console.log('The list item has been clicked'); // This console log is successful
$popupStatus = true;
checkStatus();
});
function checkStatus(){
if($popupStatus) {
console.log('The popup variable is true;'); // This console log doesn't show up
}
}
问题在于,当文档加载完毕时,您只对
$popupStatus
变量进行了一次评估。您可能希望将其移动到单击
处理程序,或者使用一个函数调用一个函数来检查最近的值(请参阅@shaunakde的解决方案)
jQuery:
var $popupStatus = false;
$('li').on('click', 'a', function() {
$popupStatus = !($popupStatus); // This assigns $popupStatus an opposite value
// $popupStatus = true; // Just sets $popupStatus to true
alert($popupStatus);
});
<ul>
<li><a href="#">Something</a></li>
</ul>
HTML:
var $popupStatus = false;
$('li').on('click', 'a', function() {
$popupStatus = !($popupStatus); // This assigns $popupStatus an opposite value
// $popupStatus = true; // Just sets $popupStatus to true
alert($popupStatus);
});
<ul>
<li><a href="#">Something</a></li>
</ul>
如果条件应该是在一个函数内单击手柄谢谢你,仍然在尝试学习何时使用该函数!所有这些答案都很有道理,我选择了你们的答案,因为这对我来说是最容易理解的,谢谢你们!