检查所有jquery不适用于动态填充的复选框

时间:2015-05-29 12:28:33

标签: jquery checkbox attributes

我有一个jquery函数来选择所有复选框,这些复选框填充在PHP循环中。循环的输出类似于下面的内容:

<label class="check"><input type="checkbox" name="selectall" value="All"/> Select All</label>
<label class="col-md-3 col-xs-12 control-label">Types Of function</label>
<div class="col-md-6 col-xs-12">                                                                                            
    <div class="col-md-7">                                    
        <label class="check"><input type="checkbox"  name="chkUser" class="icheckbox"/> Birthday</label>
    </div>
    <div class="col-md-7">                                    
        <label class="check"><input type="checkbox"  name="chkUser" class="icheckbox"/> Family Function</label>                   
    </div>
    <div class="col-md-7">                                    
        <label class="check"><input type="checkbox"  name="chkUser" class="icheckbox"/> conference</label>                        
    </div>
    <div class="col-md-7">                                    
        <label class="check"><input type="checkbox"  name="chkUser" class="icheckbox"/> wedding</label>                           
    </div>
    <div class="col-md-7">                                    
        <label class="check"><input type="checkbox"  name="chkUser" class="icheckbox"/> Corporate</label>                             
    </div>
</div>

jquery函数是:

$('.selectall').click(function() { //alert('HHH');
    if ($(this).is(':checked')) {
        $('.icheckbox').attr('checked', 'checked');
    } else {
        $('.icheckbox').attr('checked', false);
    }
});

但遗憾的是它不起作用!怎么了?

Jsfiddle Here

3 个答案:

答案 0 :(得分:2)

使用 prop()设置已选中和未选中

  $('[name=selectall]').change(function() {  
         $('.icheckbox').prop('checked', this.checked);
    });

注意:html中没有 selectall

<强> prop demo

attr domo 只能工作一次

答案 1 :(得分:1)

  1. 您必须将class="selectall"添加到 selectall 复选框
  2. <input type="checkbox" name="selectall" value="All" class="selectall">
    1. 建议使用 prop(),如Bala建议的那样。

答案 2 :(得分:0)

$(document).ready(function()         {             $(&#39; [name = selectall]&#39;)。click(function(){

            if ($(this).is(':checked')) {
                $('.icheckbox').attr('checked', 'checked');
            } else {
                $('.icheckbox').attr('checked', false);
            }
        });
    });

或 将标签名称更改为Id并尝试下面的代码

$(document).ready(function()          {             $(&#39; #selectall&#39;)。点击(function(){

            if ($(this).is(':checked')) {
                $('.icheckbox').attr('checked', 'checked');
            } else {
                $('.icheckbox').attr('checked', false);
            }
        });
    });