7

これはおそらく非常に単純なjQueryの質問ですが、ドキュメントで10分後に答えられなかったので...

チェックボックスのリストがあり、セレクターで取得できます'input[type=checkbox]'。ユーザーがシフトクリックして一連のチェックボックスを選択できるようにしたい。これを実現するには、リスト内のチェックボックスのインデックスを取得する必要があるため、そのインデックスを に渡すことができます.slice(start, end)。ユーザーがボックスをクリックしたときにインデックスを取得するにはどうすればよいですか?

4

4 に答える 4

9

次のセレクターも jQuery で動作するはずです: input:checkbox.

次に、:gt(index):lt(index)フィルターを一緒に並べることができるので、5 番目から 7 番目のチェックボックスが必要な場合は、 を使用しますinput:checkbox:gt(4):lt(2)

現在クリックされているチェックボックスのインデックスを取得するには、$("input:checkbox").index($(this)).

于 2008-09-04T14:07:16.437 に答える
1

これは簡単な解決策ですが、次のように、おそらくインデックス ヒントを使用して、各チェックボックスに一意の ID を付与します。

<input id="checkbox-0" type="checkbox" />
<input id="checkbox-1" type="checkbox" />
<input id="checkbox-2" type="checkbox" />
<input id="checkbox-3" type="checkbox" />
<input id="checkbox-4" type="checkbox" />

その後、インデックスを簡単に取得できます。

$(document).ready(function() {
  $("input:checkbox").click(function() {
    index = /checkbox-(\d+)/.exec(this.id)[1];
    alert(index);
  });
});
于 2008-09-04T14:21:18.307 に答える
0

答えてくれてありがとう、サムジャドソン。

$(':checkbox')さらに実験を重ねた結果、それらを選択するためだけに を使用することもできることがわかりました。関数を使用して範囲を取得できるのは興味深いことですが.slice()、セレクターで:gtおよびを使用してそれを行うオプションもあります:lt.slice()ただし、セレクター フィルターを使用するよりも、 の構文の方がクリーンであることがわかります。

Ryan Duffield のソリューションはあまり好きではないと言わざるを得ません。マークアップを変更する必要があり、コードを繰り返す必要があるからです。

于 2008-09-04T14:38:59.747 に答える
0

@Gorgapor: 時々、質問を少し文字通り受け取らないようにする必要があると思います。:-) ある種のインデックスを要求するようにロックダウンされていると思いました。ただし、jQuery を使用するにつれて、通常はそのようなことを行う必要がないことがわかると思います。

于 2008-09-04T14:51:27.407 に答える