2013-01-23 100 views
2

我收到一些POST數據通過AJAX作爲XML,並試圖使用jQuery將它加載到textarea中,並且遇到了一些問題。jQuery HTMLCollection,標籤剝離

的XML看起來像這樣(剝離下來,僅示出該問題的元素):

<Entry> 
    <Title>A <i>Title</i> with italics.</Title> 
    <Abstract>An abstract, which <i>also</i> may have italics</Abstract> 
</Entry> 

我已經轉換這個XML成使用$dom = $(xml) jQuery對象,其中xml是上述XML字符串。出於某種原因,jQuery似乎不符合.text().html()。我認爲這個問題與HTMLCollection(這是記錄對象顯示的內容)有關,但我不確定。

$dom.find('Title').text();按我希望的方式工作,將標題變爲「A <i>Title</i> with italics」。在摘要上做同樣的事情($dom.find('Abstract').text())完全去掉<i>標籤,導致「An abstract, which also may have italics」。

令人沮喪的是,與.html()做的事情也不一致!

$dom.find('Title').html(); #=> 'A &lt;Title&gt;, with italics' 
$dom.find('Abstract').html() #=> 'An abstract, which <i>also</i> may have...' 

任何想法是什麼問題? XML是無類型的,但我認爲這不應該有所作爲。謝謝!

回答

2

至於你說html()不會.text()使用XML & <title>作品,因爲它的一個已知的DOM元素,標籤重命名爲其他&內HTML將被剝離與<abstract>

您可以將包含HTML的節點值放在CDATA節中&使用parseXML();

var xml = "<Entry><Title><![CDATA[A <i>Title</i> with italics.]]></Title><Abstract><![CDATA[An abstract, which <i>also</i> may have italics]]></Abstract></Entry>"; 

$dom = $($.parseXML(xml)); 
alert($dom.find('Title').text()); 
alert($dom.find('Abstract').text()); 
+1

我在吃午飯時有一種認識,它可能與Title是一個HTML元素有關。 CDATA幫助很多...謝謝! –