2011-10-17 184 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