jQuery 同一页面滚动锚定功能,不同页面直接跳转

jQuery scroll to anchor function on same page, but go directly on different pages

我有几行 jQuery 基本上检测锚链接,并滚动到它们:

jQuery('a[href*=\#]').on('click', function(event){
    event.preventDefault();
    jQuery('html,body').animate({scrollTop:jQuery(this.hash).offset().top - 100}, 500);
});

问题是,当我有指向不同页面的出站锚链接时,它们甚至不再工作,因为这段代码。所以基本上我想改变这个代码,所以它只触发相同的页面锚链接(而不是出站锚链接)。我假设它在 a[href*=\#] 中的某处,但不太确定。

所以基本上,如果 href# 开头,则意味着它在同一页上,否则不要使用此代码块。

有什么办法吗?

您可以为此目的使用 start-with 选择器

jQuery('a[href^=\#]').on('click', function(event){
  event.preventDefault();
  jQuery('html,body').animate({scrollTop:jQuery(this.hash).offset().top - 100}, 500);
});