如何使用jquery从HTML标签中解包文本?
例如,如何转换此HTML
<p>A <i>sentence</i> with <b>bold words</b>.</p>
进入(即删除粗体标签)
<p>A <i>sentence</i> with bold words.</p>
仅使用jQuery而不使用正则表达式?
答案 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
方法会更容易。
在这种情况下,使用正则表达式通常是一种方法,因为你需要多个具有大致相同模式的替换。