2010-09-09 59 views
0

這與earlier question有關。我嘗試將AJAX響應中返回的HTML DOM追加到現有的DIV中。我看到所有的文字,但似乎所有標記,如大膽,斜體等都丟失了。jQuery DOM追加失敗標記

我的AJAX(XML)的數據,像這樣:

<event source="foo"> 
    <contents> 
     <h1>This is an event</h1> 
     This is the body of the event 
    </contents> 
</event> 

我的jQuery代碼做到這一點:

$("#eventDiv").append(jData.find("contents").contents().clone()); 

試圖做的.html()的克隆內容拋出異常:TypeError:無法調用未定義的方法'替換'

我有點驚訝,用jQuery做這件事實在太難了。我做的事情離軌道太遠了嗎?

+0

你可以張貼一些HTML和您的jQuery的AJAX調用? – hunter 2010-09-09 18:46:57

+0

需要查看更多的AJAX代碼。你運行ajaxSetup()?你回到哪種類型? jData中有什麼? – 2010-09-09 18:49:07

+0

我不得不求助於XMLSerializer。我遍歷每個孩子並使用序列化程序在追加之前將其轉換爲文本。獲得的經驗:目前,如果從XMLHTTP響應中獲取它們,jQuery.append()將不適用於DOM對象。 – Raj 2010-09-09 19:12:09

回答

0

似乎麻煩的是jQuery找到與允許標記命名不同的標記/節點。也就是說,您的XML格式不正確,因爲它既有內容中的節點也有文本。

這是不是很好,但它的工作:

$("#eventDiv").append($(":first-child", data).parent().html()); 

<content>標籤將被列入,而是由瀏覽器忽略。

0

看起來像jQuery不提供一個簡單的方法,我想要做什麼。總括來說,我的服務器在Ajax響應返回以下數據:

<event source="foo"> 
    <contents> 
     <h1>This is an event</h1> 
     This is the body of the event 
    </contents> 
</event> 

我想在一個div來顯示的東西裏面內容標籤。 我的JS代碼處理這個在阿賈克斯成功處理程序如下:

var jData = $(data); 

我有一個ID eventDiv一個div我需要顯示事件的內容。我希望可以這樣做:

$("#eventDiv").append(jData.find("contents").contents().clone()); 

但是這導致所有標記丟失,導致只是文本。

以下基礎上的XMLSerializer對我的作品(不適用於IE瀏覽器):

var contents = jData.find("contents"); 

if(contents != null) 
{ 
    var serializer = new XMLSerializer(); 
    $(contents).contents().each(function(index, value) 
    { 
     var cloned = $(value).clone(); 
     $("#eventDiv").append(serializer.serializeToString(cloned[ 0 ])); 
    }); 
}