2012-11-26 73 views
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(); 
    } 
}); 
+0

你應該讓一個jsfiddle.com出來 - 可能會鼓勵更多的活動 –

+1

是否可以顯示html? –

+0

我猜對了嗎?或者是'ul li'菜單下拉菜單? –

回答

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()

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> 
相關問題