在这种情况下,它似乎总是第一行没有包装在p标签中,这可能使解决方案变得更容易,尽管并非每次都如此.有时候很好.
我需要做的是确定第一行是否被包装,如果没有,则包装它.
不幸的是我不知道从哪里开始这个问题所以任何帮助将不胜感激.
最佳答案
尝试使用此代码来包装未使用< p>包装的任何TextNode标签.
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($("#demo")[0]);
for(var i=0; i < textnodes.length; i++){
if($(textnodes[i]).parent().is("#demo")){
$(textnodes[i]).wrap("
PS:TextNode检测部分已从this answer借来