我正在研究这个项目用于学习目的。现在的任务非常简单:
$.getJSON
'n'
秒检查一次新数据,并将append
检查到列表中。以下是我到目前为止的示例:(JSBin /不要忘记运行js ) 运行示例时,所有问题都将显示出来。
以下是 JS 代码:
$(document).bind('pageinit', function(){
var $myList = $( "#myList" );
var newItems = [];
function loadList(){
$.getJSON("http://jsbin.com/vayeni/2.js",function(data){
$.each(data, function( index, value ) {
newItems.push( "<li><a>" + value.airline + "</a></li>" );
if(data>newItems){
alert('New Entry');
data=newItems;
}
});
$myList.append( newItems.join( "" ) );
$myList.listview( "refresh" );
setTimeout(loadList,1000);
});
}
loadList();
});
感谢您的帮助!
答案 0 :(得分:0)
您的数据比较不正确。
你正在考虑这个:
<li><a>JetBlue</a></li>
<li><a>Continental</a></li>
...
到此:
{
"id": "1",
"airline": "JetBlue",
"number": "222",
"people": "3",
"time": "12:20"
},
{
"id": "2",
"airline": "Continental",
"number": "222",
"people": "5",
"time": "23:21"
},
总会存在不平等。
你应该使用另一种方法。例如,如果JSON数组中的id
字段是唯一的,则可以将其作为id
属性附加到无序列表中的每个项目。例如:
newItems.push( "<li id=\"" + value.id + "\"><a>" + value.airline + "</a></li>" );
这样,在每次迭代时,您都可以检查列出的JSON项是否已经存在于列表中,并在没有匹配时添加它。例如:
if (!$myList.find('#' + value.id).length) {
newItems.push( "<li id=\" + value.id + \"><a>" + value.airline + "</a></li>" );
}
最后,如果内部有项目,您可以直接附加newItems
内容:
if (newItems.length > 0) {
$myList.append( newItems.join( "" ) );
}
以下是已修改的代码段:JSBin