jQuery 1.8.1 .load html>body

3
$("#loader").load(someurl, null, function ()
{
    var html = $("#loader").html(); 
    alert(html);  //works 
});

然而,
$("#loader").load(someurl, "body", function ()
{
    var html = $("#loader").html(); 
    alert(html);  //does NOT work 
});

我试图在PhoneGap / Cordova上获取外部主机HTML数据。
对于HTML抓取,filetransfer.download API对我并不起作用,而我发现jQuery的.load函数很有效,因为只涉及内存而没有文件管理。
问题是,由于整个HTML一次性加载到某些 $("#loader") 上,所以 html.body层的css /样式表冲突并混乱。
因此,我尝试仅获取HTML的body部分。http://api.jquery.com/load/
.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )

然而,[, data]选项从来没有起作用。

"html>body"无法工作,或者任何选择器似乎都无法工作。

这是一个bug吗?

3个回答

2
选择器应该附加到URL后面(用空格分隔)。
$("#loader").load(someurl + ' body', function (){
    var html = $("#loader").html(); 
    alert(html);
});

谢谢。不幸的是,您的代码在我的环境(iOS5 Safari+ cordova/phonegap2.0)中也无法工作。同样地,在没有<+'body'>的情况下,它可以正常工作。 - user1028880

1

数据参数用于发起加载请求,如果您想从页面中过滤内容,则必须在URL末尾添加选择器并用空格分隔。

$("#loader").load(someurl + ' body', function (){
    var html = $("#loader").html(); 
    alert(html);
});

谢谢,我已经明白了,官方文档将如你所说进行修正。话虽如此,'<someurl + ' body'>'这种方式在我的环境下(iOS5 Safari+ cordova/phonegap2.0)不起作用。因此,我认为这可能是jQuery框架在iOS Safari上的一个bug。 - user1028880

1

您可以使用load方法仅加载页面的一部分。您需要在第一个参数中提供选择器。(请参见Load() api上的加载页面片段部分)

$('#loader').load('ajax/test.html body',function(){
var html = $("#loader").html();
alert(html);

});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接