15

从 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>
4

3 回答 3

12

正如 Mims 建议replaceWith()的那样,用于更改<br>to 空格,但不要更改原始元素clone(),用于制作元素的克隆。

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

演示

于 2013-01-10T00:01:47.990 回答
12

使用 .html()代替.text()

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

或者使用 DOM 方法.innerText

$('#foo')[0].innerText ;

检查小提琴

于 2013-01-09T23:48:02.483 回答
3

您可以使用该replaceWith()功能。

$("br").replaceWith(" ");
于 2013-01-09T23:54:25.567 回答