0

您好我想附加一个表单和复选框元素,但表单正在失去它的样式。复选框应组合在“列表”中,按钮保存出勤应根据 jquery Mobile 设置样式。

请问我该如何解决这个问题?

这是它的外观:

在此处输入图像描述

代码:

$('#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>').trigger('create');

}
$('input: checkbox').checkboxradio("refresh");
4

1 回答 1

1

解决方案

两件事情 :

  1. 您需要删除trigger("create")每次循环数据时都在执行的调用,这是完全错误的。该函数应该在动态内容的父级上调用。
  2. 由于您有多个需要增强的项目、按钮、复选框等,因此使用它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/

于 2013-08-18T07:35:41.910 回答