【问题标题】:jQuery add # to all internal linksjQuery将#添加到所有内部链接
【发布时间】:2011-05-17 12:44:34
【问题描述】:

谁能告诉我如何为页面上的所有内部链接添加哈希?

例如:

page.html > page.html#

谢谢你, d

【问题讨论】:

    标签: jquery hash hyperlink


    【解决方案1】:

    如果您说您只想将# 添加到指向同一域内页面的链接,您可以将window.locationhostname 与链接的hostname 进行比较:

    $("a").attr("href", function(i, href) {
        if( window.location.hostname === this.hostname ) {
            return href + "#";
        }
    });
    

    【讨论】:

      【解决方案2】:

      您可以像这样将函数传递给.attr()

      $("a").attr("href", function(i, href) { return href + "#"; });
      

      虽然...我不确定你的理由,你想滚动到当前页面的顶部吗?在这种情况下,您可以将 .scrollTop() 与 setter 一起使用,如下所示:

      $("a").click(function() { $("html, body").scrollTop(0); });
      

      或者.animate()它:

      $("a").click(function() { $("html, body").animate({scrollTop: 0 }, 500); });
      

      【讨论】:

      • 我可能错了,但我认为“内部链接”是指指向同一域内页面的链接。
      • 嗨,谢谢..我不想滚动到顶部...我试图避免它...我有一个带有 jquery.address 的灯箱,当我运行我的jquery.address 页面突然进入顶部,因为 jquery.address 添加了#,所以我试图给页面加上 url+# 以避免这种行为
      【解决方案3】:
      $("a").each(function() {
        $this = $(this);
        $this.attr("href", $this.attr("href") + "#");
      });
      

      【讨论】:

        【解决方案4】:

        也许你可以试试这个:

        $(document).ready(function() {
            var attr = $('a').attr('href');
            attr = attr + '#';
            $('a').attr('href', attr);
        });
        

        【讨论】:

        • 这个脚本会引起痛苦......“attr”的值将非常难以预测,您会将页面上的每个锚标记设置为同一个链接 - 这是不可能的。
        猜你喜欢
        • 2013-06-08
        • 2011-08-18
        • 2012-06-25
        • 2012-10-04
        • 2011-08-02
        • 1970-01-01
        • 2011-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多