当两个元素都没有被悬停时调用函数?

时间:2012-11-26 01:05:37

标签: javascript jquery

我的想法是有两个变量,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();
    }
});

2 个答案:

答案 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>