Jquery复选框检查所有

Iva*_*van 102 jquery

我不是jQuery的专家,但我试图为我的应用程序创建一个小脚本.我想检查所有复选框,但它无法正常工作.

首先我尝试使用attr,之后我尝试了,prop但我做错了.

我先试了一下:

$("#checkAll").change(function(){

  if (! $('input:checkbox').is('checked')) {
      $('input:checkbox').attr('checked','checked');
  } else {
      $('input:checkbox').removeAttr('checked');
  }       
});
Run Code Online (Sandbox Code Playgroud)

但这没效果.

下一步:这比上面的代码效果更好

$("#checkAll").change(function(){

  if (! $('input:checkbox').is('checked')) {
      $('input:checkbox').prop('checked',true);
  } else {
      $('input:checkbox').prop('checked', false);
  }       
});
Run Code Online (Sandbox Code Playgroud)

这两个例子都不起作用.我试着谷歌搜索答案,但没有成功.

jsFiddle:http://jsfiddle.net/hhZfu/4/

谢谢

Aru*_*hny 261

您需要使用.prop()来设置checked属性

$("#checkAll").click(function(){
    $('input:checkbox').not(this).prop('checked', this.checked);
});
Run Code Online (Sandbox Code Playgroud)

演示:小提琴

  • 如果您要使用jQuery,那么使用jQuery.将jQuery与内联Javascript混合起来并不是一个好主意.例如,这很糟糕:`<elementtag id ="someID"onclick ="javascript code here"`---相反,使用jQuery:`$('#someID').click(function(){checkAll()} );` (3认同)
  • 此示例不再有效. (3认同)
  • 您的帖子[this](http://stackoverflow.com/a/17902476/2218697)答案之间有什么区别?为什么使用`not(this).prop`? (3认同)

Adi*_*dil 42

只需使用checked属性,checkAll并使用prop()而不是attr来检查属性

现场演示

 $('#checkAll').click(function () {    
     $('input:checkbox').prop('checked', this.checked);    
 });
Run Code Online (Sandbox Code Playgroud)

对于像checked这样的属性,使用prop()而不是attr()

从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined.要检索和更改DOM属性(如表单元素的已检查,已选择或已禁用状态),请使用.prop()方法

复选框具有相同的ID,它应该是唯一的.最好使用带有从属复选框的某个类,这样它就不包含您不想要的复选框.由于 $('input:checkbox')将选择页面上的所有复选框.如果您的页面使用新的复选框进行了扩展,那么它们也会被选中/取消选中.这可能不是预期的行为.

现场演示

$('#checkAll').click(function () {    
    $(':checkbox.checkItem').prop('checked', this.checked);    
});
Run Code Online (Sandbox Code Playgroud)


SSR*_*SSR 35

这里有完整的解决方案.

$(document).ready(function() {
    $("#checkedAll").change(function() {
        if (this.checked) {
            $(".checkSingle").each(function() {
                this.checked=true;
            });
        } else {
            $(".checkSingle").each(function() {
                this.checked=false;
            });
        }
    });

    $(".checkSingle").click(function () {
        if ($(this).is(":checked")) {
            var isAllChecked = 0;

            $(".checkSingle").each(function() {
                if (!this.checked)
                    isAllChecked = 1;
            });

            if (isAllChecked == 0) {
                $("#checkedAll").prop("checked", true);
            }     
        }
        else {
            $("#checkedAll").prop("checked", false);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

Html应该是:

选中并取消选中已选中三个复选框上的复选框.

<input type="checkbox" name="checkedAll" id="checkedAll" />

<input type="checkbox" name="checkAll" class="checkSingle" />
<input type="checkbox" name="checkAll" class="checkSingle" />
<input type="checkbox" name="checkAll" class="checkSingle" />
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助,就像它对我一样.

JS Fiddle https://jsfiddle.net/52uny55w/

  • 我喜欢此解决方案,因为如果您取消选中其中一个框,则“全部选中”框也会变为未选中状态。同样,如果您手动选中所有对应的框,则也会选中“全部选中”框。那是很棒的用户界面反馈! (2认同)
  • 您可以通过将 `$("#checkedAll").change` 函数更改为: `var val = this.checked; 来缩短它。$(".checkSingle").each( function() { this.checked=val; });` (2认同)

Ank*_*kit 14

我认为当用户手动选择所有复选框时,应自动选中 checkall 或用户从所有选定的复选框中取消选中其中之一,然后应自动取消选中 checkall。这是我的代码..

$('#checkall').change(function () {
    $('.cb-element').prop('checked',this.checked);
});

$('.cb-element').change(function () {
 if ($('.cb-element:checked').length == $('.cb-element').length){
  $('#checkall').prop('checked',true);
 }
 else {
  $('#checkall').prop('checked',false);
 }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<input type="checkbox" name="all" id="checkall" />Check All</br>
<input type="checkbox" class="cb-element" /> Checkbox  1</br>
<input type="checkbox" class="cb-element" /> Checkbox  2</br>
<input type="checkbox" class="cb-element" /> Checkbox  3
Run Code Online (Sandbox Code Playgroud)


ioa*_*atr 7

你为什么不尝试这个(在'form#'的第二行,你需要把你的html表单的正确选择器):

$('.checkAll').click(function(){
    $('form#myForm input:checkbox').each(function(){
        $(this).prop('checked',true);
   })               
});

$('.uncheckAll').click(function(){
    $('form#myForm input:checkbox').each(function(){
        $(this).prop('checked',false);
   })               
});
Run Code Online (Sandbox Code Playgroud)

你的HTML应该是这样的:

<form id="myForm">
      <span class="checkAll">checkAll</span>
      <span class="uncheckAll">uncheckAll</span>
      <input type="checkbox" class="checkSingle"></input>
      ....
</form>
Run Code Online (Sandbox Code Playgroud)

我希望有所帮助.


Dav*_*ima 5

我知道的最简单的方法:

$('input[type="checkbox"]').prop("checked", true);


zar*_*pio 5

HTML:

<p><input type="checkbox" id="parent" /> Check/Uncheck All</p>
<ul>
  <li>
    <input type="checkbox" class="child" /> Checkbox 1</li>
  <li>
    <input type="checkbox" class="child" /> Checkbox 2</li>
  <li>
    <input type="checkbox" class="child" /> Checkbox 3</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$(document).ready(function() {
  $("#parent").click(function() {
    $(".child").prop("checked", this.checked);
  });

  $('.child').click(function() {
    if ($('.child:checked').length == $('.child').length) {
      $('#parent').prop('checked', true);
    } else {
      $('#parent').prop('checked', false);
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

演示: FIDDLE