你的問題是,你不能簡單地從一個文檔(XML響應)追加節點到另一個(HTML頁面)。這個問題有兩個:
- 您可以使用jQuery將節點從XML文檔追加到HTML頁面。這有效;節點出現在HTML DOM中,但它們保留XML節點,因此瀏覽器將忽略
style
屬性。因此文字不會變成黃色(#ffff00
)。
- 據我所知,jQuery沒有提供從XML節點獲取XML字符串(即序列化的節點)的內置方法。 jQuery可以很好地處理XML文檔,但是在HTML文檔中沒有什麼等同於
.html()
。
因此,要做到這一點,我們需要從XML文檔中提取XML字符串。有些瀏覽器支持XML節點(即IE)的.xml
財產,別人拿出一個XMLSerializer
對象:
// find the proper XML node
var $title = $(doc).find("title");
// either use .xml or, when unavailable, an XMLSerializer
var html = $title[0].xml || (new XMLSerializer()).serializeToString($title[0]);
// result:
// '<title><span style="color:#ffff00;"><strong>Title</strong></span></title>'
接着我們來養活這個HTML字符串的jQuery太新了,真正的HTML元素可以從創建它:
$("#target").append(html);
有一個小提琴可以顯示它的行動:http://jsfiddle.net/Tomalak/QWHj8/。這個例子也擺脫了多餘的<title>
元素。
無論如何。如果你有機會去影響XML本身,這將是有意義的改變:
<banner-ad>
<title><span style="color:#ffff00;"><strong>Title</strong></span></title>
</banner-ad>
只是XML編碼的<title>
有效載荷,你可以在jQuery的做到這一點:
$("#target").append($(doc).find("title").text());
有你有沒有機會影響XML本身? – Tomalak 2012-01-17 11:11:59