【问题标题】:Collapse menu not working with anchor links折叠菜单不适用于锚链接
【发布时间】:2015-11-03 11:20:05
【问题描述】:

我已经构建了一个菜单,当您从顶部向下滚动超过 250 像素时,它会折叠并在您返回顶部时返回其原始状态。但是我的网站有一些链接到主页中间的锚链接。当我直接转到这些链接时,菜单不起作用。我必须先滚动。他们有办法解决这个问题吗?

这是我使用的代码:

<script>
    jQuery(function () {
        jQuery('.fixed').data('size', 'big');
    });

    jQuery(window).scroll(function () {
        if (jQuery(window).scrollTop() > 250) {
            if (jQuery('.fixed').data('size') == 'big') {
                jQuery('.fixed').data('size', 'small');
                jQuery('.fixed').stop().animate({
                    top: '-125px'
                }, 600);
                jQuery('.navbar-nav').stop().animate({
                    top: '15px'
                }, 600);
                jQuery('.dmbs-header-img').stop().animate({
                    opacity: '0'
                }, 200);
                jQuery('.logo-simple').stop().delay(200).animate({
                    top: '120px'
                }, 600);

            }
        } else {
            if (jQuery('.fixed').data('size') == 'small') {
                jQuery('.fixed').data('size', 'big');
                jQuery('.fixed').stop().animate({
                    top: '0px'
                }, 200);
                jQuery('.navbar-nav').stop().animate({
                    top: '0px'
                }, 200);
                jQuery('.dmbs-header-img').stop().animate({
                    opacity: '1'
                }, 100);
                jQuery('.logo-simple').stop().animate({
                    top: '-50px'
                }, 200);
            }
        }
    });
</script>

【问题讨论】:

  • 能否添加一个 jsfiddle 帮助我们更轻松地找到解决方案?

标签: javascript jquery html menu collapse


【解决方案1】:

只需在锚点单击(或您需要的任何其他事件)上触发滚动事件。

jQuery('a').click(function(){
    jQuery(window).scroll();
});

将您的代码移动到函数中并在滚动或锚点单击时调用它:

function checkScroll(){
    if(jQuery(window).scrollTop() > 250)
    {
        // Your code
    }
    else
    {
        // Your code
    }
}

jQuery(window).scroll(function(){ 
    checkScroll();
});

jQuery('a').click(function(){
    checkScroll();
});

第二种解决方案可能会给您更多的灵活性。

【讨论】:

  • jQuery(window).scroll(checkScroll); 可以。
  • @RejithRKrishnan 你是对的,我只是试图反映他用于可读性的语法
猜你喜欢
  • 2018-12-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 2015-04-19
相关资源
最近更新 更多