【问题标题】:Wrap unwrapped parts of HTML string with Javascript用 Javascript 包装 HTML 字符串的未包装部分
【发布时间】:2013-12-04 15:54:16
【问题描述】:

我在变量 (Javascript/jQuery) 中有包含如下内容的字符串:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>
Pellentesque aliquet luctus lobortis.
<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>
 massa iaculis leo, nec auctor

如何将所有未包装的内容包装在 p 标签中? 所以那个字符串看起来像:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>
<p>Pellentesque aliquet luctus lobortis.</p>
<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>
<p>massa iaculis leo, nec auctor</p>

谢谢!

【问题讨论】:

  • 既然这是一串文本,有换行符吗?你怎么知道什么时候应该包装东西?
  • 没有换行符,只有一个连续的字符串。基本上需要包装的是第一个

    标记之前的所有内容,最后一个

    标记之后的所有内容,以及 和

    之间的所有内容(如果存在的话)..

  • @abdom:好的。那么你在哪里卡住了?
  • @T.J.Crowder 我还在学习 JS,所以我不知道如何写这个,我正在尝试使用 split 和 join 进行一些操作,但没有运气。来自 adeneo 的这个 awnser 效果很好

标签: javascript jquery html word-wrap


【解决方案1】:

有点像

var str = 'your string';
var div = $('<div />', {html: str});

div.contents().filter(function() {
    return this.nodeType === 3;
}).wrap('<p />');

var new_str = div.html();

FIDDLE

使用新的 jQuery 对象将字符串解析为 HTML,然后过滤掉未包装的文本节点,并用段落包装它们,并将更改后的 HTML 作为新字符串输出。

【讨论】:

  • 这很好用! :) 我仍在尝试弄清楚它是如何工作的,因为我是 JS 新手 :) 谢谢!!
  • 它的工作原理与添加的解释完全一样。它创建一个以 HTML 为内容的 jQuery 对象,然后过滤掉文本节点并将它们包装在段落中,然后调用 html() 获取更改后的 HTML
【解决方案2】:

这是一种无需 jQuery 的方法,只使用字符串方法(不需要 DOM。)

var text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>Pellentesque aliquet luctus lobortis.<p>Morbi a faucibus magna. Donec lacinia, leo eget</p>massa iaculis leo, nec auctor",
    unwrapped = text.split(/<p>\b[^>]*<\/p>/g), //regex to split on all p wrapped text
    i;

for (i=0; i < unwrapped.length; i++) {
    text = text.replace(unwrapped[i], '<p>' + unwrapped[i] + '</p>');
};

【讨论】:

猜你喜欢
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多