如何切换复选框选择而不是仅选择?

时间:2012-04-09 19:15:24

标签: javascript jquery

我目前正在使用此JavaScript代码段一次选择3个复选框

$(document).ready(function() {
   var $cbs = $('input:checkbox[name="select[]"]'),
       $links = $('a[name="check"]');

   $links.click(function() {
      var start = $links.index(this) * 3,
          end = start + 3;
      $cbs.slice(start,end).prop("checked",true);
   });
});

目前此代码仅选择复选框,但是我想知道是否有人知道如何修改它以便打开和关闭复选框选择?

以下是我当前代码的示例:“jsfiddle” - 点击1-3,4-6链接等查看复选框。

2 个答案:

答案 0 :(得分:1)

使prop("checked", ...)调用的第二个参数取决于切片中第一个(或其他)复选框的“已检查”状态:

// ...
$cbs.slice(start,end).prop("checked", !$cbs.slice(start).prop("checked"));

这是一个updated jsFiddle

[编辑] 或单独更新切片中的每个复选框:

// ...
$cbs.slice(start,end).each(function() {
  var $this = $(this);
  $this.prop("checked", !$this.prop("checked"));
});

http://jsfiddle.net/ShZNF/3/

答案 1 :(得分:0)

   $cbs.slice(start,end).each(function() {
       if ($(this).is(":checked")) {
           $(this).removeProp("checked");   
       } else {
           $(this).prop("checked",true);
       }
   });

http://jsfiddle.net/ShZNF/1/

编辑:Maeric的解决方案更好。我不知道removeProp有这个问题:

  

注意:请勿使用此方法删除本机属性,例如   选中,禁用或已选中。这将删除该属性   完全,一旦删除,不能再添加到元素。使用   .prop()将这些属性设置为false。