在#anchor之前删除href中的部分链接?

时间:2015-03-10 12:23:36

标签: javascript jquery anchor anchor-scroll

我的页面上有一个链接:

<li class="jump"><a href="http://example.com/#about">About Me</a></li>

我想使用jQuery删除.jump类中任何URL的“http://example.com/”部分。你能用最简单的代码指出我正确的方向吗?我希望代码在哈希之前删除任何内容,如果可能的话,不要在jQuery代码中指定URL(例如删除http://example.com/)。

谢谢你!

4 个答案:

答案 0 :(得分:5)

您可以使用:

1).each()迭代所有锚点

2)在#出现时拆分当前href并使用第二个数组元素

3)将新的href与前面的#连接起来并设置新的href

$('.jump a').each(function(){
  $(this).attr('href','#'+$(this).attr('href').split('#')[1]);
});

答案 1 :(得分:0)

我能想到的最简单的方法是使用锚点字符#作为分隔符来分割URL:

var url = $(".jump").attr("href"); // "http://example.com/#about"
var split_url = url.split("#");
var after_hash = split_url[1];

您的after_hash变量现在应包含值:“about”。如果要将其重新插入href属性,则需要将锚字符重新添加到此值。

由于我觉得您打算在多个网址上使用此功能,我建议将此代码放入一个函数中并在需要时调用。

答案 2 :(得分:0)

您可以使用substringlastIndexOf

$(".jump a").each(function() {    
    var $this = $(this),
        href = $this.attr("href");

    $this.attr("href", href.substring(href.indexOf("#")));        
});

答案 3 :(得分:0)

以下是我将如何使用jQuery:

$(".jump a").each(function() {
    var newHref = $(this).attr("href").replace("http://example.com/", "");
    $(this).attr("href", newHref);
});