如果您通過Ajax調用加載HTML,它將始終以字符串的形式返回數據,因此您將無法將正常的jQuery選擇器應用於響應。如果您將數據轉換爲$(data),您也將無法訪問正文,因爲$(data)是正文內容的集合(由jQuery internal clean()方法剝離)。你必須根據你想要的結果做了幾個選項:
如果你想只追加加載HTML的身體某處在文檔中,你可以這樣做:
$.get('http://your_url', function(data) {
$('.result').html(data);
});
這將只加載正文內容到.result容器。如果你想進一步處理,你可以從那裏訪問選擇器。
如果你只是想操縱未連接的片段,你可以通過使用過濾器& get來訪問它的元素。
$(data).filter('p').get() //will get all para DOM nodes
$($(data).filter("#test2").get()).text() //will get text of one specific dom node
,如果你要處理的主體中的數據可能會更快處理它作爲XML的另一種選擇 - XML處理一下http://think2loud.com/224-reading-xml-with-jquery/。 使用你的例子它會是這樣的:
$.ajax({
url : "http://mypage",
dataType : 'xml', //change dataType to XML
success : function(data) {
//data is correct at this point
$(data).find('html').each(function() {
//here you can find whatever you want
a = $(this).find("body")
console.log(a);
})
}
})
這是你的實際代碼?您將空的'body'變量傳遞給'.find()'。 – 2012-01-11 19:02:19
如果'data'是一個完整的HTML文檔,在嘗試在某些瀏覽器中查找'
'元素時會遇到問題。 – 2012-01-11 19:04:38