2011-10-17 10 views
0

jqueryとdivメニューに少し問題があり、正しく隠れていません!スクロール中に他の要素が重なっている場合のメニュー(div)を非表示

1ページのサイトがあり、ユーザーがスクロールしている間にウィンドウの後に表示されるビューポートの上部に固定メニューがあります。すべてのナビゲーションは、(divの高さによっては)縦スクロールのようなものです。

すべてのページのコンテンツは、以下のように別々のdivにあります。

<!-- 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> 

などとなる。

それは

(この場合は、いくつかのH1タグ)いくつかのテキストを重ねています場合、私は、メニューを非表示にするには、このjqueryのコードやライブラリjQueryのオーバーラップ(https://github.com/brandonaaron/jquery-overlaps)を使用

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

いいえ...エフェットは同じです。点滅は続く:( – MrSlash

0

う:&& (over=true)&& (over==true)またはちょうど&& (over)

+0

ありがとう!今度はOK – MrSlash

0

だけで考えることが必要です。

それはフェージングが起こっていない可能性がありますスクロールするほど速く、混乱します。あらかじめ作成されたフェード機能の代わりに.stop(true、true).animate(/ あなたのプロパティは /)を使用してみることができます。 jqueryの.stop()を参照してください、それがここの鍵です。

より明確な答えを決定するには、実際にページが表示されている必要があります。

+0

私は試したが効果は同じだ.Jqueryの行はscript.jsの冒頭でチェックすることができる。リンクはhttp://bit.ly/qicIa2である。 – MrSlash

関連する問題