jQuery .text()等价物,用于将<br/>标签转换为空格

时间:2013-01-09 23:46:09

标签: 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>

3 个答案:

答案 0 :(得分:12)

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

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

或者使用DOM方法.innerText

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

<强> Check Fiddle

答案 1 :(得分:11)

由于Mims建议使用replaceWith()<br>更改为空格,但是为了不更改原始元素,请使用clone()来复制元素。

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

DEMO

答案 2 :(得分:2)

您可以使用replaceWith()功能。

$("br").replaceWith(" ");