解决方案
两件事情 :
- 您需要删除
trigger("create")
每次循环数据时都在执行的调用,这是完全错误的。该函数应该在动态内容的父级上调用。
- 由于您有多个需要增强的项目、按钮、复选框等,因此使用它
trigger("create")
比逐个增强组件更好。
pageinit
如果您在加载页面时执行此操作,我希望您正在使用。
代码
在所有这些变化之后,
标记:
<div data-role="page" id="mypage">
<div data-role="header" data-theme="a">
<h1></h1>
</div>
<div data-role="content" id="editattendancecontent"></div>
<div>
JS
//pageinit method of the page
$(document).on("pageinit", "#mypage", function () {
var json = [
{
userID: Math.random(),
name: "Roger"
},
{
userID: Math.random(),
name: "Summer"
},
{
userID: Math.random(),
name: "William"
},
{
userID: Math.random(),
name: "Sunny"
},
{
userID: Math.random(),
name: "Walter"
}
];
console.log(json);
$('#editattendancecontent').append('<p>Who Attended?</p><form id="editattendanceform"><div data-role="fieldcontain"><fieldset data-role="controlgroup" id="editattendancelist"></fieldset></div><input type="submit" value="Save Attendance" data-inline="true" /></form>');
for (var i = 0; i < json.length; i++) {
$('#editattendancelist').append('<input type="checkbox" id="' + json[i].userID + '" class="custom" /><label for="' + json[i].userID + '">' + json[i].name + '</label>') //removed trigger("create");
}
$(this).trigger("create"); //where $(this) is the page - you can also call it on $("#editattendancecontent"). That'll also work
});
演示
http://jsfiddle.net/hungerpain/HMQf7/1/