如果您通过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