2016-02-22 75 views
1

我有一個非常簡單的導航欄,在滾動更改。該徽標應該預先設定好,但每次頁面滾動時都會添加另一個徽標。我在那裏有一個布爾值來檢查徽標是否已被添加,但它仍然運行代碼。這裏是我的代碼:jQuery的滾動功能,儘管布爾值儘管在每一個滾動preroll

$(window).scroll(function() { 
     var scroll = $(window).scrollTop(), 
      hidden = true; 
     if (scroll >= 470) { 
      $('#nav').addClass('static-nav'); 
      if(hidden) { 
       $('#logo').prepend(' <div class="logo-container"> <img src="img/logo3.png" alt="logo"></div>'); 
       hidden= false; 
      } 
     }else{ 
      $('#nav').removeClass('static-nav'); 
      if(!hidden) { 
       $('.logo-container').remove(); 
       hidden = true; 
      } 
     } 
    }); 
+3

要設置'隱藏= TRUE;'每個滾動處理程序調用 –

+0

但你的布爾是每次進入函數時復位。也許你可以簡單地檢查一下「logo-container」類是否存在。除非像'hidden = $('。logo-container')那樣賦值,否則使用隱藏的布爾值沒有任何意義。長度=== 0' – Icepickle

+0

@ A.Wolff就是這樣。非常感謝。 –

回答

0

隱藏的布爾應該是滾動事件功能之外,或者它每次你改變你的滾動位置的時間將是真實的。

但是,您應該檢查導航是否可見,而不是像素頂部。您無法預測用戶是否會以這種方式查看菜單。像這樣的東西應該工作:

How to tell if a DOM element is visible in the current viewport?