检查是否选中了JQuery mobile复选框

San*_*eph 8 javascript checkbox jquery jquery-mobile

我有一个复选框列表,我想获得每个复选框的状态.清单在这里:

<div data-role="fieldcontain">
    <fieldset data-role="controlgroup">
       <input type="checkbox" name="Sunday" id="Sunday-1" class="custom" />
       <label for="Sunday-1">Sunday</label>
       <input type="checkbox" name="Monday" id="Monday-1" class="custom" />
       <label for="Monday-1">Monday</label>
       <input type="checkbox" name="Tuesday" id="Tuesday-1" class="custom" />
       <label for="Tuesday-1">Tuesday</label>
  </fieldset>
</div>
Run Code Online (Sandbox Code Playgroud)

我通常使用此引号检查复选框的状态:

var isChecked = $('#CheckboxID').is(':checked');

但在我的情况下,是否有一种方法可以立即获取"Jquery Mobile"复选框的状态?

Pra*_*Nag 27

你可以做

var status = $('input[type="checkbox"]').filter('.custom').map(function(){
    return $(this).is(':checked') ? 1 : 0;

});
Run Code Online (Sandbox Code Playgroud)

然后,status array将以相同的顺序为每个复选框添加一个条目,0用于未选中和1已选中.它没有多大用处,因为你没有关于数组中复选框的其他信息.

如果你想根据status你可以使用.each()而执行操作,比如

$('input[type="checkbox"]').filter('.custom').each(function(){
   if($(this).is(':checked')){
     // perform operation for checked
   }
   else{
     // perform operation for unchecked
   }

});
Run Code Online (Sandbox Code Playgroud)

UPDATE

如果您想array of objects使用name and status复选框构建一个,您可以使用

var status = $('input[type="checkbox"]').filter('.custom').map(function(){
    var name = $(this).attr('name'); 
    if($(this).is(':checked'))
         return { 'name':name, 'status' : 'Checked'}; 
    else
        return { 'name':name, 'status' : 'UnChecked'};

});

console.log(status);?
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/joycse06/rL3Ze/

阅读更多内容.each().map()