2013-01-20 66 views
3

我有一個變量sometext,我想用$('div').text(sometext);分配給div一些文字。問題是所有<br/>sometext變成&lt; br/ &gt;。我不能使用$('div').html(),因爲我想在div內保留很多內部結構,所以我只能使用.text()函數。轉換HTML編碼< BR/>到html jQuery中的.text()新行標籤

因此,一旦我將文本傳遞給div,有什麼方法可以將編碼的<br/>標記更改爲HTML中的真實換行符?我的意思是這樣的:

$('div').convertMyBRsToHTML(); 
+0

你只是aske d一小時前這個相同的問題,並沒有給出任何反饋意見http://stackoverflow.com/questions/14425152/jquery-get-text-node-siblings-at-deepest-level – charlietfl

+0

這不是同一個問題 - 我我正在嘗試不同的方法來解決同樣的問題,但兩種方法都在做不同的事情。雖然是的,他們似乎有關。我確實對前一個問題給出了反饋 - 但是我沒有選擇答案,因爲雖然我嘗試了它們並調整了它們,但它們並沒有解決我的問題。前面的問題試圖獲得最深層次的文本節點,這裏我只替換HTML編碼的
標籤。 – user961627

+0

你需要提供一些可以放入jsfiddle.net中的更真實世界的html,將會節省相當多的時間。在不同的主DIV的 – charlietfl

回答

5

您請求的功能應該是這樣的:

$.fn.convertMyBRsToHTML = function(text){ 
    this.text(text); 
    this.html(this.html().replace(/&lt;br\s*\/&gt;/g,'<br/>')); 
    return this; 
} 

現在你可以使用通過:

$(YOUR_SELECTOR).convertMyBRsToHTML("<b>Some</b> new text.<br />next line<br />and so on"); 
+0

那麼這就是我正在尋找的!不幸的是它不適合我。你測試過了嗎? – user961627

+1

下面是一個工作示例:http://jsfiddle.net/aUSfQ/ –

+0

謝謝!仍然沒有和我一起工作,我會嘗試對我的代碼進行一些調整,並希望能夠找出答案。 – user961627

2

您可以設置文本之前更換<br> S:

$('div').text(sometext.replace(/<br\s*\/?>/gi, '\n');