Jquery 为什么不是';是否检测到布尔变量?

Jquery 为什么不是';是否检测到布尔变量?,jquery,Jquery,控制台在结束时未检测到过度和为真。我做错什么了吗 var transLayer = $('.transparentBg'); var overExpand = false; var overUl = false; $(transLayer).hide(); console.log('transLayer hide'); // this is being logged $('#header .nav .wrapper > ul > li.expand').hover(functi

控制台在结束时未检测到
过度和
为真。我做错什么了吗

var transLayer = $('.transparentBg');
var overExpand = false;
var overUl = false;


$(transLayer).hide();
console.log('transLayer hide'); // this is being logged

$('#header .nav .wrapper > ul > li.expand').hover(function(){ 
    overExpand = true;  
    console.log(overExpand);// this works = true    
}, function(){ 
    overUl = true;
});

console.log(overExpand); // this shows false

该值为false,因为将该值设置为
true
的代码从未运行

在悬停事件处理程序中有
overland=true
。在触发事件之前,该代码不会运行。
console.log(overland)
肯定会在触发事件之前执行,因此overland仍然为false

如果要在将值设置为
true
后查看该值,则应从处理程序内部登录:

$('header .nav .wrapper > ul > li.expand').hover(function(){
    overExpand = true;
    console.log(overExpand);
}, function(){
    overUl = true;
});

如果您真的希望它按当前编写的方式为真,则必须对代码进行大量重构。

该值为假,因为将该值设置为
true
的代码从未运行过

在悬停事件处理程序中有
overland=true
。在触发事件之前,该代码不会运行。
console.log(overland)
肯定会在触发事件之前执行,因此overland仍然为false

如果要在将值设置为
true
后查看该值,则应从处理程序内部登录:

$('header .nav .wrapper > ul > li.expand').hover(function(){
    overExpand = true;
    console.log(overExpand);
}, function(){
    overUl = true;
});
如果您真的希望它以当前编写的方式为真,那么您必须对代码进行大量重组。

在hover函数中添加您的
console.log()

$('#header .nav .wrapper > ul > li.expand').hover(function(){ 
    overExpand = true;    
    console.log(overExpand);   
}, function(){ 
    overUl = true;
});
这将在您每次将鼠标悬停在元素上时在控制台中创建一个新的日志,就像在执行函数时一样。在以前的代码中,对
console.log()
的调用发生在悬停函数触发之前。

在悬停函数中添加
console.log()

$('#header .nav .wrapper > ul > li.expand').hover(function(){ 
    overExpand = true;    
    console.log(overExpand);   
}, function(){ 
    overUl = true;
});

这将在您每次将鼠标悬停在元素上时在控制台中创建一个新的日志,就像在执行函数时一样。在前面的代码中,对
console.log()
的调用发生在悬停函数被触发之前。

我稍微更新了我问题中的代码。是的,您是对的,添加
console.log
在悬停事件中起作用。但是有没有办法从事件外部检测到布尔值的变化?@muudless-我的原始答案仍然适用。由于直到触发事件后才设置值,因此在添加处理程序之后但在处理程序触发之前执行的代码仍将看到原始值。谢谢,我现在理解了。我想我只需要在调用hover事件时启动另一个函数,我稍微更新了我问题中的代码。是的,您是对的,添加
console.log
在悬停事件中起作用。但是有没有办法从事件外部检测到布尔值的变化?@muudless-我的原始答案仍然适用。由于直到触发事件后才设置值,因此在添加处理程序之后但在处理程序触发之前执行的代码仍将看到原始值。谢谢,我现在理解了。我想我只需要在调用hover事件时启动另一个函数。