如何使用jQuery解包文本?

时间:2010-03-09 12:55:49

标签: jquery html

如何使用jquery从HTML标签中解包文本?

例如,如何转换此HTML

<p>A <i>sentence</i> with <b>bold words</b>.</p>

进入(即删除粗体标签)

<p>A <i>sentence</i> with bold words.</p>

仅使用jQuery而不使用正则表达式?

6 个答案:

答案 0 :(得分:38)

你可以这样做:

  $("b").each(function() {
    $(this).replaceWith(this.childNodes);
  });

注意:这会保留.text()可能会改变它的所有HTML内容。

如果你想完全剥离<b></b>,你可以在jQuery 1.4 +中轻松使用Cheeso的答案:

$("p").html(function(i,h){ return h.replace(/<b>/g,'').replace(/<\/b>/g,''); }); 

答案 1 :(得分:7)

我首先非常喜欢wrapInner,然后解开。

例如,如果您尝试打开超链接

<a id="anId" href="#">sample text</a>

然后你可以通过

打开超链接
$('#anId').wrapInner('<span/>');
$('#anId span').unwrap();

答案 2 :(得分:4)

如何操作取决于您所处情况的其他限制。

没有通用的解开方式。

如果代码始终为<b>,那么您可以执行此操作

var h = $(elementSelector).html;
h = h.replace("<b>","");
h = h.replace("</b>","");
$(elementSelector).html(h);

我不确定你为什么不喜欢正则表达式。

答案 3 :(得分:2)

要解开文字而不打算使用其他任何内容:

$("b").replaceWith($("b").text());

答案 4 :(得分:1)

$('b').contents().unwrap();

定位您选择的元素的内容并展开它们。

答案 5 :(得分:0)

我认为在这种情况下完全依赖jQuery会使事情变得复杂化。使用接受普通字符串或正则表达式的replace方法会更容易。

在这种情况下,使用正则表达式通常是一种方法,因为你需要多个具有大致相同模式的替换。