方法 2(最新)
如果你绝对确定要使用listview("refresh")
,建议你promise()
先判断你append
是否完成,然后再申请refresh
。像这样 :
var li = ""; //append to a string
for (var i = 0; i < accounts.length; i++) {
li += '<li data-oid="' + accounts[i]._oid + '"><a><h2>' + accounts[i].nickname + ' - ' + accounts[i].bankname + '</h2><p>Balance: ' + accounts[i].acccy + " " + accounts[i].acbal + '</p></a></li>';
}
//check if append is done by chaining promise() and done()
$('#accountlist').append(li).promise().done(function () {
$(this).listview("refresh"); // refresh here
});
在这里演示:http: //jsfiddle.net/hungerpain/u9TcE/4/
更多信息:Promise Docs
方法一
你不需要refresh
listview。listview
元素不需要太多的 CSS 操作来使它们看起来像它们的样子。append
因此,它们是动态设置的(即,当您使用set toli
进入 a时。在此处查看此数组:ul
data-role
listview
var songs = [
"Sweet Child 'O Mine",
"Summer of '69",
"Smoke in the Water",
"Enter Sandman",
"I thought I've seen everything"
];
这是 HTML:
<ul data-role="listview" id="songlist" data-theme="c" data-divider-theme="a" data-inset="true">
<li data-role="list-divider" role="heading">Song List</li>
</ul>
这是我要注入的方法:
$.each(songs, function (i, song) {
$("<li/>", {
"data-icon": "star",
"class": "vote",
"html": '<a href="#" id="song' + i + '">' + song + '</a>',
"id": i
}).appendTo("#songlist");
});
就是这样。你不需要做更多的事情来完成这项工作。接下来最重要的是放置:
将你的脚本放在正文中,你就完成了。之所以有效,是因为追加是同步的<body>
。因此,当您使用它时,您可以确定元素已经加载到 DOM 中并准备好刷新,jQM 会自动执行此操作。
这是一个演示
jsFiddle 中的选项 - 来自 jsFiddle文档
onLoad:包装代码,使其在 onLoad 窗口事件中运行,将其放在<head>
section
onDomReady:包装代码,使其在 onDomReady 窗口事件中运行,将其放在<head>
section
no wrap - in<head>
:不包装 JavaScript 代码,将其放在<head>
section
no wrap - in<body>
:不包装 JavaScript 代码,将其放在<body>
section
为了使您的解决方案正常工作,请复制<script>
您在其中编写此内容的标签/js
您输入此内容的文件的引用,并将其粘贴为<body>
.