如何在jQuery中选择所有本地链接

时间:2010-10-19 16:45:04

标签: jquery

我需要选择所有本地链接,无论是否以

开头
  • /path/to/page
  • http://mydomain.com/path/to/page
  • https://mydomain.com/path/to/page

并用

替换它们
  • /#/path/to/page

感谢您的帮助。

编辑:正如dvhh在评论中所指出的,更好的解决方案是定位点击次数。很抱歉,我不会测试解决方案来标记正确的答案。谢谢你的帮助

编辑2:发布new question关于通过点击进行此操作。

4 个答案:

答案 0 :(得分:2)

你应该可以这样做:

$('a').each(function() {
    if ( this.host === 'mydomain.com' || this.getAttribute('href').indexOf('/') === 0) {
        this.href = "/#" + this.pathname;
    }
});

检查href.host是否与domain.com匹配,或href的第一个字符是/,如果是,则设置href/#加上href的当前路径名部分。

我正在使用原生getAttribute()因为我认为在获取设置的实际原始属性方面最安全。也许它不会有所作为。

答案 1 :(得分:1)

这应该选择所有锚标签。

$("a[href*='https://mydomain.com/path/to/page'] a[href*='/path/to/page']  a[href*='http://mydomain.com/path/to/page']")

这应该替换所有的hrefs

$("a[href*='https://mydomain.com/path/to/page'] a[href*='/path/to/page']  a[href*='http://mydomain.com/path/to/page']").each(function () {
  var $this = $(this);
  var currentHref = $this.attr('href');
  $this.attr("href","#/" + currentHref.substring(currentHref.indexOF("/path/to/page"), currentHref.length - 1));

})

答案 2 :(得分:1)

你要求的

$("a").each(
    function(index,element) {
        if(element.href.indexOf("https://mydomain.com/")==0) {
            $("a").attr("href",element.href.replace("https://mydomain.com/","/#/"));
        }
    }
}

答案 3 :(得分:0)

非常简单

$(function () {
    $('a').each(function () {
        $(this).attr('href', '/#' + pathname);
    });
});