如何更改嵌套<a> tag encompasses using jQuery?</a>的文本数量

时间:2009-11-30 13:04:08

标签: jquery

我要做的是采用包含链接的段落,例如:

<p>this is a <a href="#">link</a> to something</p>

...并使用jQuery对其进行修改,以使链接包含所有段落文本,例如:

<p><a href="#">this is a link to something</a></p>

我似乎无法理解这一点。

干杯, 詹姆斯

5 个答案:

答案 0 :(得分:1)

使用'empty'删除p中的所有内容,然后将href'追加'到p。

答案 1 :(得分:1)

使用text()
在您的具体情况下:

$('p').each(
  function()
  {
     var $this = $(this);  //more than 1 reference, I store it in a variable
     var address = $this.find('a').attr('href');
     //$this.text() includes children elements' text
     $this.html('<a href="' + address + '">' + $this.text() + '</a>');
  }
);

答案 2 :(得分:1)

您需要能够选择段落和锚点。所以,如果他们有ids会有所帮助。

 <p id="p">this is a <a id="a" href="http://www.google.com">link</a> to something</p>

然后:

 var orig = $("#p").text();

var a = $('#a').text(orig);
$("#p").empty("");
$("#p").html(a);

答案 3 :(得分:1)

$("p > a").each(function(el) {
  var parent = $(this).parent();
  var text = parent.text();

  parent.replaceWith("<a href="+$(this).attr('href')+">"+text+"</a>");
});

这样做,是遍历段落中的所有锚标记,获取唯一的文本部分,并用包含相同href属性的新锚标记替换段落( var)提取的文本。

答案 4 :(得分:1)

试试这个:

        $(function() {
            var link = $("<a href='#'></a>");
            var text = $("p a").parent().text();            

            $("p").replaceWith($(link).append(text));
        });