将 <br> 标签转换为空格的 jQuery .text() 等价物

标签 jquery html whitespace line-breaks

从 jQuery 选择中获取文本很简单:

<span id="foo">hello world</span>

$('#foo').text();

hello world

但是当 jQuery 选择包含 <br> 时标签它们在概念上是换行符,是空白。遗憾.text()完全剥离它们:

<span id="foo">hello<br>world</span>

$('#foo').text();

helloworld

我怎样才能从这样的跨度中提取文本,使其结果为 hello world相反?

当然,这是为了清楚地说明问题而发明的一个简单示例。一个真正的答案需要“等同于 .text()”并且当然可以处理任意 HTML。这是一个稍微棘手的例子,也是编造的:

<div id="foo"><span class="bar"><em>hello</em><br></span>world</div>

最佳答案

按照 Mims 的建议使用 replaceWith()更改 <br>到空格,但为了不改变原始元素使用 clone()制作元素的克隆。

var foo = $("#foo").clone();
foo.find("br").replaceWith(" ");
var text = foo.text();

DEMO

关于将 <br> 标签转换为空格的 jQuery .text() 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14248519/

相关文章:

javascript - 以 php (json) 形式检索变量

javascript - 当文本字段不为空时,Ajax 自动完成 jquery 不起作用

html - 仅在移动设备上 Bootstrap clearfix?

javascript - 当我单击按钮时,我想随机旋转 "div"

mysql - mysql_insert_id() 中的空格;返回

java - 在 JAVA 中分隔没有空格的字符串

javascript - ScrollTop bug jquery 在 chrome 上

javascript - jquery 眨眼几下

javascript - 获取鼠标移动速度

javascript - meteor 辅助变量去除重复的相邻空格