javascript – jQuery – 将所有未包装的文本包装在p标签中

前端之家收集整理的这篇文章主要介绍了javascript – jQuery – 将所有未包装的文本包装在p标签中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一种情况,以下代码被写入我的页面.

在这种情况下,它似乎总是第一行没有包装在p标签中,这可能使解决方案变得更容易,尽管并非每次都如此.有时候很好.

我需要做的是确定第一行是否被包装,如果没有,则包装它.

不幸的是我不知道从哪里开始这个问题所以任何帮助将不胜感激.

最佳答案
尝试使用此代码来包装未使用< p>包装的任何TextNode标签.

  1. function getTextNodesIn(node,includeWhitespaceNodes) {
  2. var textNodes = [],whitespace = /^\s*$/;
  3. function getTextNodes(node) {
  4. if (node.nodeType == 3) {
  5. if (includeWhitespaceNodes || !whitespace.test(node.nodeValue)) {
  6. textNodes.push(node);
  7. }
  8. } else {
  9. for (var i = 0,len = node.childNodes.length; i < len; ++i) {
  10. getTextNodes(node.childNodes[i]);
  11. }
  12. }
  13. }
  14. getTextNodes(node);
  15. return textNodes;
  16. }
  17. var textnodes = getTextNodesIn($("#demo")[0])​​​​;
  18. for(var i=0; i < textnodes.length; i++){
  19. if($(textnodes[i]).parent().is("#demo")){
  20. $(textnodes[i]).wrap("

这是一个jsfiddle,显示了这一点.

PS:TextNode检测部分已从this answer借来

猜你在找的jQuery相关文章