我正在使用Phonegap构建一个小型(仅测试)Macrumors应用程序,并且远程主机实际工作(没有相同的主机浏览器限制)。我正在使用jQuery Load()
函数将Macrumors主页http://www.macrumors.com/的内容加载到bin,隐藏div中,然后每个函数循环遍历所有文章类以在一个框中显示标题该页面的链接。
问题是,加载Macrumors HTML内容后,each
函数不适用于文章类。此外,在加载函数(允许您指定某些选择器,包含的id和类,仅加载页面的那些部分)中,该类不起作用;在load函数和每个函数中都没有类。并且许多Id在each
函数中也不起作用。
以下是代码:
function onDeviceReady()
{
// do your thing!
$('#bin').load('http://www.macrumors.com/ #content');
$('.article').each(function(){
var title = $('a').html();
$('#content').append('<b>'+title+'</b>')
});
}
HTML内容
<body onload="onBodyLoad()">
<div id="bin">
</div>
<div id="content">
</div>
</body>
如果我错过了一些非常简单的错误,我真诚地道歉;我是主要 JS新手。
答案 0 :(得分:2)
.load()
是不同步的。当您执行.each()
时,它尚未完成。您需要在.each()
的成功处理程序中放置.load()
和其他任何想要对.load()
的结果进行操作的代码。
你会这样做:
function onDeviceReady()
{
// do your thing!
$('#bin').load('http://www.macrumors.com/ #content', function() {
$('.article').each(function(){
var title = $('a').html();
$('#content').append('<b>'+title+'</b>')
});
});
}
我也猜测你的.each()
功能不正常。如果您想从每个.article
对象中获取链接,您需要使用这样的代码,这样您才能在每个<a>
对象中找到.article
标记,而不是整个文档中的所有<a>
代码:
function onDeviceReady()
{
// do your thing!
$('#bin').load('http://www.macrumors.com/ #content', function() {
$('.article').each(function(){
var title = $(this).find('a').html();
$('#content').append('<b>'+title+'</b>')
});
});
}