2016-02-22 32 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?