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