【发布时间】:2021-01-20 02:55:40
【问题描述】:
我有一个包含多个文本节点的 html 文档,通常包含在 p-tags 中,但有些不是。像这样:
<div id="container">
<p>"Some text"</p>
<p>"Some text"</p>
"Some text" "Some text" "Some text"
<p>"Some text"</p>
"Some text" "Some text" "Some text"
</div>
我找到了一种使用 Jquery 将所有文本节点包装在 p-tags 中的方法,但这不是我想要实现的。
function getTextNodesIn(node, includeWhitespaceNodes) {
var textNodes = [], whitespace = /^\s*$/;
function getTextNodes(node) {
if (node.nodeType == 3) {
if (includeWhitespaceNodes || !whitespace.test(node.nodeValue)) {
textNodes.push(node);
}
} else {
for (var i = 0, len = node.childNodes.length; i < len; ++i) {
getTextNodes(node.childNodes[i]);
}
}
}
getTextNodes(node);
return textNodes;
}
var textnodes = getTextNodesIn($("#container")[0]);
for(var i=0; i < textnodes.length; i++) {
if(($(textnodes[i]).parent().is("#container"))) {
$(textnodes[i]).wrap("<p>");
}
}
我希望 p-tags 之间没有包裹 p-tag 的所有文本节点合并到一个文本节点,然后围绕该文本节点包裹 p-tag。像这样:
<div>
<p>"Some text"</p>
<p>"Some text"</p>
<p>"Some text Some text Some text"</p>
<p>"Some text"</p>
<p>"Some text Some text Some text"</p>
</div>
这可能吗?对不起我的英语。
【问题讨论】:
标签: javascript jquery html