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