【发布时间】:2014-03-18 18:55:12
【问题描述】:
这是我想要做的:在 phonegap android 应用程序中,使用 jquery listview 从我的静态 xml 动态创建 UL 并显示它。
为了创建一个可过滤的列表视图,我使用了来自 w3schools 的代码。
然后我在 HTML 正文的 onload() 方法中使用以下代码从我的 XML 动态添加元素:
function parseit() {
alert("parseit");
$.ajax({
type: "GET",
url: "catalog.xml",
dataType: "xml",
success: function(xml) {
$(xml).find("Book").each(function(){
var title = $(this).find('Name').text();
console.log(title);
var listItem = '<li> <a href="#">' +title + '</li>';
$("#list").append(listItem).listview('refresh');
});
}
});
}
我的 XML 文件的架构是这样的:
<Books>
<Book>
<Name> somename </Name>
<Price> $1.00 </Price>
<Details> asdfgh </Details>
</Book>
<Book> ..... 1500 items of this kind... </Book>
</Books>
我面临的几个问题:
虽然我正在调用刷新,但 Listview 不会立即显示新添加的项目。我在几个地方看到了有关删除 div 内容等的信息,但我没有使用它(请参阅我给出的链接中的代码)。很长一段时间后,我必须四处点击才能显示项目。 Jquery listview 太慢了。我添加的列表项的数量是 1500 左右。
添加的项目不属于已排序的标题(例如,以“A”开头的项目不会返回该部分,而是在底部创建一个新的“A”部分
我选择了 jquery 的 listview,因为它给了我免费的搜索功能。
【问题讨论】:
-
你的意思是 console.log ?当然。忘了补充,parseit() 函数是用 onload 调用的。那么您是说要在视图中加载 1500 个项目?是的,我的 XML 有 1500 个项目,我正在使用上面的 parseit() 函数添加这些项目。我删除了 console.log 语句。应用仍然没有响应。为了更快的处理,首选 JSON 而不是 XML。它还大大减少了带宽的使用。见Why is everyone choosing JSON over XML for jQuery