脚本未执行

时间:2017-01-30 20:04:05

标签: jquery css twitter-bootstrap

我对网络语言的经验很少,所以这可能是一个简单的错误。

我有一个内部链接的网页,如<a href="#div-id">button</a>所示。但是,由于响应式引导程序菜单,滚动有时会超调。问题完全如前一个问题所述,我试图实现已接受的解决方案:

How can I use HTML ID links with the Bootstrap navbar-header?

但是,建议的功能永远不会执行。我实现如下。作为一种万无一失的测试方法,我已经包含了两个警告语句(一个用于不相关的函数)。第一个警告语句正确执行,第二个警报语句永远不会执行。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script>
$(function () {                      // on document ready
    var div = $('#showOrHideDiv');   // cache <div>
    $('#action').click(function () { // on click on the `<a>`
        alert('here');               // => PROPERLY EXECUTED
        div.fadeToggle(1000);        // toggle div visibility over 1 second
    });
    // listen for click events originating from elements with href starting with #
    $('body').on('click.scroll-adjust', '[href^="#"]', function (e) {
      alert('here');                 // => NEVER EXECUTED
      var $nav;

      // make sure navigation hasn't already been prevented
      if ( e && e.isDefaultPrevented() ) return

      // get a reference to the offending navbar
      $nav = $('div.navbox')

      // check if the navbar is fixed
      if ( $nav.css('position') !== "fixed" ) return

      // listen for when the browser performs the scroll
      $(window).one('scroll', function () {
        // scroll the window up by the height of the navbar
        window.scrollBy(0, -$nav.height())
      });

    });
});

</script>

有人能指出我实施中的错误吗?

1 个答案:

答案 0 :(得分:1)

事实证明,还有其他被调用的功能,我不知道(感谢Jason提示)。这些脚本确保了平滑滚动,这是我使用的模板类型的常见功能,因此在此处提供我的解决方案可能很有用。

最后,我能够通过向现有功能添加几行来解决这个问题,类似于我试图实现的功能。

这是新代码,其中添加了代码注释:

$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
  var target = $(this.hash);

  /* added by me: */
  var $x;
  var $nav;

  $nav = $('nav#tf-menu')

  if ( $nav.css('position') == "fixed" ){ $x=0; } else {$x=$nav.height()+30};
  /* end added */

  target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
  if (target.length) {
    $('html,body').animate({

      scrollTop: target.offset().top - 70 - $x //added the -$x
    }, 1000);
    return false;
  }
}
});
}