JS:有没有办法在点击功能中调用滚动功能,或两者兼用?

时间:2016-02-03 09:00:29

标签: javascript jquery navbar sticky

我的页面有一个粘性导航栏,其“粘性”工作正常,但导航栏的2个主要内部元素*的行为不是乱码。 2个主要内部元素是徽标滑出式导航栏(点击时激活)。预期的行为如下:

  • 默认情况下,徽标(位于橙色条中心)必须“隐藏” 当用户从顶部向下滚动80px时(或 从文档的顶部向上滚动80px。

  • 一旦用户在80px的顶部滚动,徽标就必须隐藏 该文件。

  • 但是,在滑出式导航栏处于活动状态时,徽标必须永远不可见。然而,当导航栏处于非活动状态时,它必须再次可见。

  • 与徽标不同,导航栏图标必须始终可见,并且
    像徽标一样,它必须是粘性的。

jsfiddle中,所有预期的行为都会播出,但仅限于滚动,而非点击。即。向下滚动超过80px后,徽标将可见(这很好),但在导航栏图标被单击到活动状态时不会隐藏(除非导航元素已处于活动状态)。这个问题在我滚动的那一刻得到了解决,但是在点击这一刻我不想要的时刻就解决了。

我知道为什么会发生这种情况,这是因为虽然我在$(window).scroll(function ()处理了所有这些条件,但我还没有进入$("#menu-opener").click(function()因为我无法在那里使用scrollTop(),我也不能成功地组合这两个函数。

那么,我能解决这个问题,是通过组合函数,在clickfunction中调用scrollTop()还是其他任何东西?非常感谢任何帮助。

请注意 :当我说'导航栏的2个主要内部元素'时,实际上我已将徽标和滑出式导航栏放入单独的divs并希望它保持这种方式

2 个答案:

答案 0 :(得分:2)

那么为什么你不能在那里使用scrollTop?

这不是预期的行为:

https://jsfiddle.net/91gxLvbb/4/

您可以使用以下方法检查scrolltop:

if($(window).scrollTop() > 80)   

答案 1 :(得分:0)

https://jsfiddle.net/91gxLvbb/6/

我添加了#menulogo:

$("#menu-opener").click(function(){
  $("#menu-opener, #menu-opener-inner, #menu, #menulogo").toggleClass("active");
});

和css:

#menulogo.active #logoflag{display:none}