如果动态创建html,则不会启用checkbox的“checked”属性

时间:2013-03-16 07:49:13

标签: jquery jquery-mobile

我创建了一个包含复选框的列表视图。在列表项中,我希望选中复选框。列表视图是在内容来自服务器时动态创建的。

我有以下jsfiddle代码。 http://jsfiddle.net/praleedsuvarna/rN28z/

你能帮我解决这个问题吗?提前致谢

下面的

是我的动态列表内容的示例,其中第二个和第三个复选框设置为“已检查”

$(document).on('pageshow', '#index', function(){     
    var list = '<li>'+
    '   <div class="checkBoxLeft">'+
    '       <input type="checkbox" name="checkbox-0" id="checkbox-0" class="hidden-checkbox"/>'+
    '   </div>  '+
    '   <a href="item1.html" class="detailListText">item1</a>'+
    '</li>'+
    '<li>'+
    '   <div class="checkBoxLeft">'+
    '       <input type="checkbox" name="checkbox-0" id="checkbox-0" class="hidden-checkbox" checked="checked"/>'+
    '   </div>'+
    '   <a href="item1.html" class="detailListText">item2</a>'+
    '</li>'+
    '<li>'+
    '   <div class="checkBoxLeft">'+
    '       <input type="checkbox" name="checkbox-0" id="checkbox-0" class="hidden-checkbox" checked="checked"/>'+
    '   </div>                     '+
    '   <a href="item1.html" class="detailListText">item3</a>'+
    '</li>'

    $("#viewdata").html(list);
    $("#viewdata").listview("refresh");
});

下面是我的html页面

<body>
    <div data-role="page" id="index">
        <div data-theme="a" data-role="header">
            <h3>
                First Page
            </h3>
            <a href="#second" class="ui-btn-right">Next</a>
        </div>

        <div data-role="content">
            <ul data-role="listview" data-theme="a" id="viewdata">
            </ul>
        </div>

        <div data-theme="a" data-role="footer" data-position="fixed">

        </div>
    </div>   
</body>

1 个答案:

答案 0 :(得分:3)

已修复且有点清理版本:http://jsfiddle.net/rN28z/6/

我移动了这段代码:

$('input[type="checkbox"]').each(function() {
    $(this).parent('.checkBoxLeft').addClass(this.checked ? 'checked' : 'not-checked');
});

pageshow处理程序中。您在pagebeforeshow上调用它,到那时您的HTML尚未填充。