JQuery解包内容

时间:2011-09-19 00:58:42

标签: jquery html

在CMS中我正在写博客。每个帖子标题的输出的HTML结构如下所示:

<h2>
    <a href="...">Title</a>
</h2>

我想要做的是删除包含代表博客标题的内容的<a>标记。

我做了一些环顾四周,发现了两个差不多的解决方案:

  1. remove() - 这也将删除内容本身
  2. unwrap() - 我认为你不能用标签来定位标签内的文字来摆脱标签本身。

3 个答案:

答案 0 :(得分:13)

首先使用.wrapInner并打开新结构..

$('h2 a').wrapInner('<span>').children().unwrap();

http://jsfiddle.net/gaby/ffKDn/

演示

以更好的方式更新..

使用.contents()定位文本节点,并在这些节点上使用.unwrap()

$('h2 a').contents().unwrap();

http://jsfiddle.net/gaby/ffKDn/8/

演示

答案 1 :(得分:1)

通过在CMS中编辑适当的模板,可以更有效地实现这一目标。但是你可以通过以下方式完成它。

$(document).ready(function() {
    $('h2').each(function() {
       $(this).html($(this).children().html());
    });
});

请参阅this JSFiddle example

答案 2 :(得分:0)

您可以使用remove()但首先需要捕获文本。像这样的东西

var title = $('h2 a').text();
//grab the text from the a href

$('h2').remove('a');
//remove the link    

$('h2').html(title);
//add the title back to the h2

示例: http://jsfiddle.net/qzHsb/