Javascript 在Jquery段落中换行纯文本

Javascript 在Jquery段落中换行纯文本,javascript,jquery,Javascript,Jquery,我有一个h2和一些文本: <h2>Test</h2> Lorem ipsum dolor hener ait 但它不起作用。如何解决此问题?您可以获取父节点的所有文本节点,并使用p元素将它们包装起来。我不知道这个解决方案是否适用于你的html结构 contents()将返回所有节点,包括文本节点。我使用的filter()确保只包装包含字符的textnodes。用于代码对齐的空白也是文本节点 $('h2')。每个(函数(){ var textnodes=$(this.p

我有一个h2和一些文本:

<h2>Test</h2>
Lorem ipsum dolor hener ait

但它不起作用。如何解决此问题?

您可以获取父节点的所有文本节点,并使用p元素将它们包装起来。我不知道这个解决方案是否适用于你的html结构

contents()
将返回所有节点,包括文本节点。我使用的
filter()
确保只包装包含字符的textnodes。用于代码对齐的空白也是文本节点

$('h2')。每个(函数(){
var textnodes=$(this.parent().contents().filter(function()){
返回this.nodeType===Node.TEXT\u Node&&this.nodeValue.trim();
}).wrapAll(“”);
});
p{
背景色:红色;
}

测验
洛雷姆·伊普苏姆·多勒·亨纳·艾特

无需jQuery即可实现这一点

文本是,因此您可以使用访问它们


如果未按预期工作,则问题在于
h2.nextSibling
不会返回文本节点,而是返回元素和当前文本之间的另一个“不可见”文本节点。只需使用F12检查您的HTML并进行调试。

您可以显示更多的HTML吗?特别是,需要包装的文本后面是什么?
<h2>Test</h2>
<p>Lorem ipsum dolor hener ait</p>
$('h2').each(function() {
     $(this).next().wrapAll('p');
});
for (let h2 of document.querySelectorAll("h2")) {
    let text = h2.nextSibling;
    let p = document.createElement("p");
    h2.parentNode.insertBefore(p, text);
    p.appendChild(text);
}