0

我正在使用此代码在页面内滚动。基本上检查内部链接,如果它们是间隔,则添加平滑滚动:

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

      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});
</script>

但是,我在同一页面中也有幻灯片。这使用来自 Bootstrap 的 Carousel。此代码与幻灯片冲突,我想为此禁用平滑滚动href

如何添加代码以防止这种冲突?

4

1 回答 1

3

修改您的选择器以明确排除幻灯片中的任何锚元素。假设幻灯片在具有 id 的元素中#slideshow(例如):

$('a[href*=#]:not([href=#], #slideshow a)').click(function() {

虽然我个人发现使用.not()方法而不是:not()选择器更具可读性(因为语法颜色突出显示适用于方法,但不适用于单个字符串):

$('a[href*=#]').not("[href=#], #slideshow a").click(function() {
于 2013-11-09T22:57:33.253 回答