1

控制台最后没有检测overExpand为真。难道我做错了什么?

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
4

2 回答 2

3

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

你有overExpand = true一个悬停事件处理程序。在触发事件之前,该代码不会运行。肯定会在事件触发之前执行,console.log(overExpand)因此 overExpand 仍然是错误的。

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

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

如果您真的希望它与当前编写的方式一致,那么您将不得不大量重组代码。

于 2012-08-08T01:32:25.257 回答
1

添加你console.log()的悬停功能。

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

每次将鼠标悬停在元素上时,都会在控制台中创建一个新日志,因为这是执行函数的时间。在您之前的代码中,调用console.log()发生在触发悬停功能之前。

于 2012-08-08T01:32:51.140 回答