2017-08-04 43 views
2

我有jQuery的几行,基本上检测锚链接,并滚动到他们: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开始#,这意味着它是在同一页上,否则不要使用此代码块。

任何方式来做到这一点?

回答

1

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

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

这可能是最快的方法,而无需添加类。如果由于某种原因这种方法确实会产生冲突,我建议添加一个专门的类,例如'.click-to-scroll'。这样,除非将类添加到这些定位标记,否则它不会与其他页面上的定位标记混淆。 –

相关问题