0

我该如何转这个:

<a class="link">
   <p class="paragraph">This is some text</p>
   <p class="paragraph">This is some more text</p>
   <p class="paragraph">And some more</p>
</a>

进入这个:

<a class="link">
   This is some text This is some more text And some more
</a>

用 jQuery。我尝试使用追加和合并,但我无法弄清楚。

4

3 回答 3

5

由于该text方法返回元素的文本内容及其后代,因此您可以使用它:

var link = $("a.link");
link.text(link.text());​​​​​​​​​

从文档:

获取匹配元素集中每个元素的组合文本内容,包括它们的后代。

这是一个工作示例

更新(见评论)

如果这需要应用于多个.link元素,您可以使用each

$("a.link").each(function() {
    $(this).text($(this).text()); 
});
于 2012-04-04T21:31:45.187 回答
4

这将起作用:

$("a.link").text(function(i,text){
    return text;
});

还有另一种方式(未测试):

// you can optionally filter to
// only p elements too with
// .children("p")
$("a.link").children().contents().unwrap();

这是第二种的另一种变体:

$("a.link p").contents().unwrap();

编辑:只是为了清楚起见:
所有这些解决方案都适用于多个元素。第一个解决方案是一种相对不常见的语法,可用于大多数 jQuery setter 函数。它在每个匹配的元素上运行回调,并将属性/属性的值设置为从回调返回的值。

于 2012-04-04T21:33:24.000 回答
0

试试这个

    $(document).ready(function(){
      var concatText = "";

      $("p.paragraph").each(function(){
       concatText = concatText + " " + $(this).text() 
      });

        $("a.link").html(concatText);
​     });​
于 2012-04-04T21:33:19.930 回答