我有一种情况,以下代码被写入我的页面.
<div>
Some text here which is not wrapped in tags
<p>Some more text which is fine</p>
<p>Blah blah another good line</p>
</div>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它似乎总是第一行没有包装在p标签中,这可能使解决方案变得更容易,尽管并非每次都如此.有时候很好.
我需要做的是确定第一行是否被包装,如果没有,则包装它.
不幸的是我不知道从哪里开始这个问题所以任何帮助将不胜感激.
尝试使用此代码来包装任何未用<p>标签包装的 TextNode。
function getTextNodesIn(node, includeWhitespaceNodes) {\n var textNodes = [], whitespace = /^\\s*$/;\n\n function getTextNodes(node) {\n if (node.nodeType == 3) {\n if (includeWhitespaceNodes || !whitespace.test(node.nodeValue)) {\n textNodes.push(node);\n }\n } else {\n for (var i = 0, len = node.childNodes.length; i < len; ++i) {\n getTextNodes(node.childNodes[i]);\n }\n }\n }\n\n getTextNodes(node);\n return textNodes;\n }\n\n var textnodes = getTextNodesIn($("#demo")[0])\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b\xe2\x80\x8b;\n for(var i=0; i < textnodes.length; i++){\n if($(textnodes[i]).parent().is("#demo")){\n $(textnodes[i]).wrap("<p>");\n }\n }\xe2\x80\x8b\nRun Code Online (Sandbox Code Playgroud)\n\n这是一个jsfiddle,展示了这一点的实际效果。
\n\nPS:TextNode检测部分借用了这个答案
\n