使用jquery将链接替换为其href

使用jquery将链接替换为其href,jquery,Jquery,我有一个p标签,它有许多锚定标签和一些文本。我想用其受尊重的href替换每个锚标记 试试这个: $('p').find('a').each(function () { var $this = $(this); $this.html($this.attr('href')); }); 我理解您的问题,您希望替换整个标记,而不仅仅是包含的文本,如下所示: 您正在寻找: CSS3不使用jQuery的解决方案: <style type="text/css"> a &g

我有一个p标签,它有许多锚定标签和一些文本。我想用其受尊重的href替换每个锚标记

试试这个:

$('p').find('a').each(function ()
{
    var $this = $(this);
    $this.html($this.attr('href'));
});

我理解您的问题,您希望替换整个标记,而不仅仅是包含的文本,如下所示:

您正在寻找:


CSS3不使用jQuery的解决方案:

<style type="text/css">
    a > span { display: none; }
    a:after { content: attr(href); }
</style>
<a href="http://www.test.com"><span>Test</span></a>

a>span{display:none;}
a:在{content:attr(href);}之后

对于非CSS3浏览器来说,性能会下降。

非常相似,我知道

$("a").each(function(){
  $(this).text($(this).attr('href'));
});

你能把你的问题具体点吗?一个输入和预期输出的例子会有很大帮助。@Mat-以下是问题所描述的:输入

----输出
。与其使用find,不如让sizzle做它最擅长的事情,并使用
$('pa')
@Phil:因为它们在语义上是等价的,但是
.find()
更快。@菲尔:
$(“PA”)
几乎被翻译成
$(“p”)。查找(“a”)
。请参阅,这不会将
a
标记替换为
href
属性的内容。它只是将
a
标记的
innerHTML
设置为
href
。。。。不一样的事。。。。
a
标签没有像OP中要求的那样被替换。@Felix,我正在键入这个答案!你是一个速度恶魔。绝对比我的答案干净+1它只替换了少数锚固件,而保留了其他锚固件。它显示了一个错误:fragment.childNodes为undefined@Yassir:你能展示一下你的HTML的这部分吗?是否有些锚没有
href
属性?您可以尝试将选择器更改为
$('pa[href]')
和/或将返回值更改为:
document.createTextNode($(this.attr('href'))。不幸的是,我不知道这个错误在这个上下文中意味着什么。似乎IE9之前不支持
:after
伪选择器。
$("a").each(function(){
  $(this).text($(this).attr('href'));
});