【问题标题】:Navbar-spy on BootStrap 3 not allowing external linksBootStrap 3 上的 Navbar-spy 不允许外部链接
【发布时间】:2013-09-21 07:00:32
【问题描述】:

一直在尝试在我的导航栏(例如博客)的末尾添加外部链接,以及链接到其他 .html 文件的附加下拉列表,但它不起作用。

这是代码。我应该修改什么以允许这些非#links?

<div id="navbar-section" class="navbar navbar-static-top">
  <div class="container">

    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>

    <div id="navbar-spy" class="nav-collapse collapse navbar-responsive-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#home"><i class="icon-home"></i></a></li>
        <li><a href="#services">Services</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#contact">Contact</a></li>
        <li><a href="blog.html">Blog</a></li>
        <li class="dropdown">
          <a class="dropdown-toggle" data-toggle="dropdown" href="#">Infos <span class="caret"></span></i></a>
              <ul class="dropdown-menu">
                <li class="nav-header">Menu 1</li>
                <li>
                  <a href="external1.html">external 1</a>
                </li>
                <li>
                  <a href="external2.html">external 2</a>
                </li>
                <li class="nav-header">Menu 2</li>
                <li>
                  <a href="external3.html">external 3</a>
                </li>
                <li>
                  <a href="external4.html">external 4</a>
                </li>
                </li>
              </ul>
        </li> 
    </div>
  </div>
</div>

顺便说一句,Dologan 在另一篇处理稍有不同问题的帖子上给出了提示(也许?),但我不确定如何添加它以便解决我的问题。

链接在这里:How to add smooth scrolling to Bootstrap's scroll spy function

感谢您的宝贵时间!

-- 更新--

我发现问题出在哪里,custom.js 文件中的这段代码:

$( '#navbar-spy' ).off( 'click' ).on( 'click', 'a', function( e ) {         

            e.preventDefault();

            var elmHash = $( this ).attr( 'href' );
            var elmOffsetTop = Math.ceil( $( this.hash ).offset().top );
            var windowOffsetTop = Math.ceil( $(window).scrollTop() );

            if( elmOffsetTop != 0 ) {
                elmOffsetTop = elmOffsetTop - 70;
                if( windowOffsetTop == 0 ) {
                    elmOffsetTop = elmOffsetTop - 70;
                }
            }

            //console.log( $( this ).attr( 'href' ) );              
            $( 'html:not(:animated), body:not(:animated)' ).animate({ scrollTop: elmOffsetTop }, 1100 );                                              

        });  

评论整个部分解决了我的问题,但是我失去了很好的滚动效果。 尝试了一些东西,但我无法使外部链接和滚动效果正常工作。

有什么想法吗?

【问题讨论】:

    标签: javascript html css twitter-bootstrap twitter-bootstrap-3


    【解决方案1】:

    您的问题没有说明您的问题是什么。 外部链接没有哈希,所以elmOffsetTop = Math.ceil( $( this.hash ).offset().top ); 会报错。

    在您的 javascript 开头添加 if(!$( this ).attr( 'href' ).match(/^#/)) return; 以防止出现此错误:

    $( '#navbar-spy' ).off( 'click' ).on( 'click', 'a', function( e ) {         
    
                if(!$( this ).attr( 'href' ).match(/^#/)) return;  
                e.preventDefault();
    
                var elmHash = $( this ).attr( 'href' );
                var elmOffsetTop = Math.ceil( $( this.hash ).offset().top );
                var windowOffsetTop = Math.ceil( $(window).scrollTop() );
    
                if( elmOffsetTop != 0 ) {
                    elmOffsetTop = elmOffsetTop - 70;
                    if( windowOffsetTop == 0 ) {
                        elmOffsetTop = elmOffsetTop - 70;
                    }
                }
    
                //console.log( $( this ).attr( 'href' ) );              
                $( 'html:not(:animated), body:not(:animated)' ).animate({ scrollTop: elmOffsetTop }, 1100 );                                              
    
            }); 
    

    【讨论】:

      【解决方案2】:

      不要删除整个代码,因为你会丢失整个滚动动画, 不调用函数e.preventDefault();就足够了,删除它,一切都会好起来的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-20
        • 2018-09-05
        • 1970-01-01
        • 1970-01-01
        • 2014-06-13
        相关资源
        最近更新 更多