Jquery 选中鼠标悬停在元素的鼠标上

Jquery 选中鼠标悬停在元素的鼠标上,jquery,Jquery,我有如下代码: html: 但是在foo的mouseleave上,我想检查条是否悬停。所以,从foo鼠标移动到bar,但它会记录我的情况,因为bar没有悬停 确保元素之间没有差距。检查此CSS,例如: #bar{ float: left; background: green; } a { float: left; background: red; } 浮动不会在元素之间产生任何间隙。请检查。 功能嵌套将根据您的要求进行: $(document).ready(f

我有如下代码:

html:

但是在
foo
的mouseleave上,我想检查
条是否悬停。所以,从
foo
鼠标移动到
bar
,但它会记录我的情况,因为bar没有悬停


确保元素之间没有差距。检查此CSS,例如:

#bar{
    float: left;
    background: green;
}

a {
    float: left;
    background: red;
}
浮动
不会在元素之间产生任何间隙。请检查。

功能嵌套将根据您的要求进行:

$(document).ready(function(){
    $('a').hover(function(){
        console.log('A link is hovered');
    },function(){
        console.log('A link is Not hovered');
        $('#bar').hover(function(){
            console.log('Div is hovered');          
        },function(){
            console.log('Div is Not hovered');
        }); 
    });
});

这似乎是由Internet Explorer处理CSS和Javascript的顺序造成的。元素之间没有间隙,因此这不是问题所在。您的代码在Chrome中正常工作

这有点难看,但它支持了我的结论,即internetexplorer正在CSS更改之前处理Javascript&它确实提供了一种获得预期结果的方法。添加一个
setTimeout(fn,0)
可以通过将Javascript暂停足够长的时间以处理CSS来解决您的问题

$('a').hover(function(){
    console.log('hovered');
},function(){
    setTimeout(function(){
        if($('#bar').is(':hover')===false){
            console.log('bar is not hovered');
        }
    }, 0);
});
这是一个例子


您可能还想通读这个问题(),因为它有一些非常有用的信息来解释正在发生的事情。

它适用于我,Chrome最新版本。将两个答案(您和husen)结合起来对我来说效果很好,所以我不确定是否接受答案。。。所以两个答案都是+1。。。
$(document).ready(function(){
    $('a').hover(function(){
        console.log('A link is hovered');
    },function(){
        console.log('A link is Not hovered');
        $('#bar').hover(function(){
            console.log('Div is hovered');          
        },function(){
            console.log('Div is Not hovered');
        }); 
    });
});
$('a').hover(function(){
    console.log('hovered');
},function(){
    setTimeout(function(){
        if($('#bar').is(':hover')===false){
            console.log('bar is not hovered');
        }
    }, 0);
});