我的想法是有两个变量,insideLink表示我目前是否正在我的菜单上方盘旋,而内盒是否会检查我是否将鼠标悬停在Div容器上。
如果我离开,我会检查我是否也不在另一个元素中,如果我不在两者中,我会调用closeboth函数来关闭它们。
我尝试这样做,但它不起作用。离开菜单链接后,Box立即关闭。
我认为setTimeout会有所帮助,但我对此的尝试并不是很有效。有任何想法吗?
$(linkID).hover(function() {
insideLink=1;
console.log("Its over Link");
},function() {
insideLink=0;
if (insideBox==0) {
console.log("Its outside both elements, closebox");
closebox();
}
});
$(open).hover(function() {
insideBox=1;
console.log("Its inside box");
},function() {
insideBox=0;
if (insideLink==0) {
console.log("Its outside both elements, closebox");
closebox();
}
});
答案 0 :(得分:1)
由于链接的mouseout
在框的mouseover
之前触发,因此一种方法是使用setTimeout()
:
insideLink=0;
setTimeout(function() {
if (insideBox==0) {
console.log("Its outside both elements, closebox");
closebox();
}
}, 100);
它会暂停100ms的框关闭操作,这应足以让mouseover
事件被触发,将insideBox
设置为1.同样可以应用于.hover()
的{{1}}盒子。
答案 1 :(得分:0)
我猜你的意思是这样的:
<div id="outerDiv" onmouseover="checkMouse()">
Outer DIV <br />
<div id="innerDiv">Inner DIV
<br /> Inner DIV <br />
</div>
Outer DIV <br />
</div>
<script type="text/javascript">
function checkMouse(){
if(window.event.target.id == 'outerDiv'){
console.log( 'indise outer div');
}
else{
console.log( 'indise inner div');
}
}
</script>