0

我目前正在使用此 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 链接等以选中复选框。

4

2 回答 2

1

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

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

这是一个更新的 jsFiddle

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

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

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

于 2012-04-09T19:19:23.890 回答
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。

于 2012-04-09T19:22:58.377 回答