1

我的想法是有两个变量, insideLink 标记我当前是否将鼠标悬停在我的菜单上, insideBox 检查我是否将鼠标悬停在 Div 容器上。

如果我离开,我会检查我是否也离开了另一个元素,如果我都离开了,我会调用 closeboth 函数来关闭它们。

我试过这样做,但它不起作用。离开菜单链接后,框立即关闭。

我想 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();
    }
});
4

2 回答 2

1

由于mouseout链接在框之前触发mouseover,一种方法是使用setTimeout()

insideLink=0;
setTimeout(function() {
    if (insideBox==0) {
        console.log("Its outside both elements, closebox"); 
        closebox();
    }
}, 100);

它将盒子关闭动作暂停 100 毫秒,这应该足以mouseover让设置为 1 的事件被触发insideBox。同样可以应用于.hover()盒子的。

于 2012-11-26T01:54:58.700 回答
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>
于 2012-11-26T01:44:20.307 回答