【问题标题】:jQuery scroll to anchor function on same page, but go directly on different pagesjQuery滚动到同一页面上的锚功能,但直接在不同的页面上
【发布时间】:2018-01-12 22:03:51
【问题描述】:

我有几行 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# 开头,这意味着它在同一页面上,否则不要使用此代码块。

有什么办法吗?

【问题讨论】:

    标签: javascript jquery anchor scrollto


    【解决方案1】:

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

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

    【讨论】:

    • 这可能是最快的方法,无需添加类。如果由于某种原因这种方法确实会产生冲突,我建议添加一个像 .click-to-scroll 这样的专用类。这样,它就不会与其他页面上的锚标记混淆,除非您将类添加到这些锚标记中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    相关资源
    最近更新 更多