javascript - JQuery 滚动到 anchor - 仅定位某些链接

标签 javascript jquery

我在 Sharepoint 上实现了以下脚本:

<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) {
        $('#s4-workspace').animate({
          scrollTop: target.offset().top
        }, 2000);
        return false;
      }
    }
  });
});</script>

它工作得很好,只是现在所有超链接(例如一些 Bootstrap 选项卡链接)都会触发脚本。

如何使上述脚本工作但仅适用于以下链接:#mission、#vision、#strategy?

谢谢!

最佳答案

更改您的选择器:

$('a[href^="#"]')

或者您可以使用.filter():

$('a[href]').filter(function() {
  var rg = /\#+\w/g; // this makes sure to select all the anchors with "href='#word'"
  return rg.test(this.hash) === true;
}).click(function() {
    // all the functionality as is
});

查看下面的示例演示:-

$('a[href]').filter(function() {
  var rg = /\#+\w/g;
  return rg.test(this.hash) === true;
}).css('color', 'red')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href='#what'>#what</a>
<a href='http://hehehe.com'>http://</a>
<a href='#how'>#How</a>

关于javascript - JQuery 滚动到 anchor - 仅定位某些链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33893087/

相关文章:

javascript - ReactJS - 从带参数的函数返回未定义的值

javascript - 如果 session 为空,如何将用户返回到 login.html?

javascript - 添加和删​​除用于切换打开和关闭全屏导航的类

jquery - 如何在 onclick 和 windows.resize 上运行命名空间函数

javascript - onFocus 没有通过 selectionStart 获取光标位置

javascript - Jquery 在带有链接的两个图像之间切换

javascript - 如何将自定义脚本添加到运行 javascript 文件的 package.json 文件中?

javascript - 检查 if/en/or/es/in document.location

javascript - 当用户单击任何数字时停止计时器/自动流程

javascript - AD FS 2.0 身份验证和 AJAX