jQuery:如何从string中删除可变数量的p标签

时间:2014-08-26 14:20:09

标签: javascript jquery html paragraph

我有一个包含可变HTML内容的字符串。 该字符串可以包含一个,多个或没有p标签,它们也可以包含类。

使用jQuery 删除所有p标记的最佳方法是什么,同时保留每个标记的HTML内容。

我首先尝试了以下内容,但当然只有将整个字符串包装在一个段落中才会有效,如果段落上有类或其他属性,则无法覆盖:

str.substring(3).slice(0, -4);

修改 这是一个例子,但是p标签的数量可以变化,也可以没有。

之前的例子:

<p>Some text <p class="someClass"> Some other text</p> Some more text</p>

示例之后:

"Some text Some other text Some more text"

非常感谢你提供任何帮助,蒂姆。

5 个答案:

答案 0 :(得分:4)

使用Unwrap$('p').contents().unwrap()

与wrap相反,它删除了选择器的父节点。 p标记是内容的父元素,在解包之前选择内容将打开p标记。的 jsFiddle

答案 1 :(得分:2)

您可以使用regular expression执行此操作。它只删除p标签并保留所有其他标签。

<强>的JavaScript

var string = "<p>this is a test with <p class='bold'>multiple</p> p-tags.</p><span>THIS IS COOL</span>";
var result = string.replace(/<[\/]{0,1}(p)[^><]*>/ig,"");

console.log(result);

<强> FIDDLE

如果您要删除所有代码,可以使用/(<([^>]+)>)/ig代替正则表达式。

答案 2 :(得分:1)

尝试以下方法:

var str = "<p>Test</p>";
var res = str.replace("<p>", "").replace("</p>", "");

答案 3 :(得分:1)

如果我理解正确,并且您希望删除p标签,但内容仍然存在,则应该如下所示:

str.replace('<p>', '').replace('</p>', '');

答案 4 :(得分:1)

您还可以使用replaceWith - jsFiddle Example,可读并使用父/子标记

$('p').replaceWith($('p').text())