用Javascript包装HTML字符串的未包装部分

时间:2013-12-04 15:54:16

标签: javascript jquery html wrapping

我在变量(Javascript / jQuery)中包含字符串,其中包含以下内容:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>
Pellentesque aliquet luctus lobortis.
<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>
 massa iaculis leo, nec auctor

我如何在p标签中包装所有未包装的内容? 所以字符串看起来像:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>
<p>Pellentesque aliquet luctus lobortis.</p>
<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>
<p>massa iaculis leo, nec auctor</p>

谢谢!

2 个答案:

答案 0 :(得分:3)

这样的东西
var str = 'your string';
var div = $('<div />', {html: str});

div.contents().filter(function() {
    return this.nodeType === 3;
}).wrap('<p />');

var new_str = div.html();

FIDDLE

使用新的jQuery对象将字符串解析为HTML,然后过滤掉未打包的文本节点,并用段落包装它们,并将更改的HTML作为新字符串输出。

答案 1 :(得分:0)

这是一种不使用jQuery的方法,只使用字符串方法(不需要DOM。)

var text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>Pellentesque aliquet luctus lobortis.<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>massa iaculis leo, nec auctor",
    unwrapped = text.split(/<p>\b[^>]*<\/p>/g), //regex to split on all p wrapped text
    i;

for (i=0; i < unwrapped.length; i++) {
    text = text.replace(unwrapped[i], '<p>' + unwrapped[i] + '</p>');
};