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

呼び出しの2番目の引数を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 に答える