2013-01-09 79 views
13

是微不足道的得到一個jQuery選擇文本:的jQuery的.text(),相當於該轉換<br>標籤由空格

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

回答

11

由於米姆斯建議使用replaceWith()改變<br>爲空格,但不改變原始元素使用clone(),使元素的克隆。

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

DEMO

+0

嗯,這在jsfiddle很好用,但是當我在我的真實代碼中嘗試它時,我得到'「語法錯誤,無法識別的表達式:「''.replaceWith()'...現在還沒有意義... – hippietrail

+0

@hippietrail你是否直接從jsfiddle複製代碼?如果是這樣,請嘗試手動輸入。 – Musa

+0

我仍然得到這個錯誤,並且還在Firefox中。 – hippietrail

11

使用.html()而不是.text()

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

或使用DOM方法.innerText

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

Check Fiddle

+0

但是,當我從提取的文件有更瑣碎的標記比我的例子中,我會留下一個HTML解析的問題沒有? – hippietrail

+0

你可以舉這種情況的例子!!另外我不認爲這應該是一個問題 –

+0

'

hello
world
' – hippietrail

2

您可以使用replaceWith()函數。

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

我正要發佈這個,把這個相關的小提琴放在一起:http://jsfiddle.net/FCck2/ –

相關問題