2011-10-17 241 views
0

我有一個小問題,jquery和div菜單沒有正確隱藏!隱藏菜單(div)當滾動時與其他元素重疊

我有一個單頁的網站,在用戶向下滾動時在窗口後面的視口頂部有一個固定的菜單。所有的導航都像一個很長的(取決於div高度)垂直sroll。

所有的頁面內容都在單獨的divs如下。

<!-- this is the menu--> 
<ul id="jmenu" style="position:fixed; z-index:9999"> 
    <li>...</li> 
    <li>...</li> 
</ul> 
<!-- this is the structure section--> 
<div id="first">...</div> 
<div id="second">...</div> 
<div id="third">...</div> 
<div id="fourth">...</div> 

等等。

我使用這個jQuery代碼和庫jQuery的重疊(https://github.com/brandonaaron/jquery-overlaps)隱藏菜單,如果是重疊的一些文字(在這種情況下,一些H1標籤)

var over= false; 
$(document).scroll((function() { 
if($('#jmenu').overlaps("h1") && (over==false)){ 
    $('#jmenu').fadeOut("slow"); 
    over= true; 
}else{ 
    $('#jmenu').fadeIn("slow"); 
    over= false; 
} 
})); 

但是有一些錯誤有關這一信息。菜單開始閃爍,如果我快速滾動的所有頁面和菜單重疊許多不同的H1。

有人能告訴我我在做什麼錯嗎?

回答

0

應該這條線;

if($('#jmenu').overlaps("h1") && (over=true)){ 

if($('#jmenu').overlaps("h1") && (over=false)){ 
+0

nope ...效果是一樣的。眨眼繼續:( – MrSlash

0

您在這裏有一個錯字:&& (over=true)應該是&& (over==true)或只是&& (over)

+0

的感謝!現在,它的確定 – MrSlash

0

只是一個想法:

這可能是衰落沒有發生跟滾動一樣快,所以會變得困惑。您可以嘗試使用.stop(true,true).animate(/ 您的屬性在這裏 /),而不是預先構建的淡入淡出功能。在jquery上查找.stop(),這是這裏的關鍵。

我會看到頁面中的行動,確定了更明確的答案。

+0

我試過,但效果是一樣的。你可以在的script.js的開始檢查Jquery的線條。鏈接在這裏http://bit.ly/qicIa2 – MrSlash