2008-09-04 25 views
4

をクリックしてくださいセレクタ'input[type=checkbox]'を使用します。ユーザーがShiftキーを押しながらクリックして一連のチェックボックスを選択できるようにしたい。これを達成するには、リスト内のチェックボックスのインデックスを取得する必要があります。そのインデックスを.slice(start, end)に渡すことができます。ユーザーがボックスをクリックしたときにインデックスを取得するにはどうすればよいですか?jQueryのスライスとこれはおそらく、本当に簡単jQueryの質問ですが、私はそうマニュアルでは10分後にそれに答えることができませんでした...</p> <p>私はチェックボックスのリストを持っている、と私はそれらを得ることができ、イベント

答えて

8

次のセレクタはjQueryでも動作するはずです:。

:gt(index):lt(index)のフィルタを組み合わせて文字列にすることができます。したがって、5番目から7番目のチェックボックスを使用する場合は、input:checkbox:gt(4):lt(2)を使用します。

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

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); 
    }); 
}); 
0

答えがありがとう、samjudson。

さらに実験したところ、$(':checkbox')を使って選択することもできます。あなたは.slice()関数を使って範囲を取得することができますが、セレクタで:gt:ltというオプションを使用することもできます。私は.slice()の構文がセレクターフィルターを使用するよりもきれいであると思っています。

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

1

@Gorgapor:時々少し文字通り質問をする必要があると思います。 :-)私はあなたが何らかのインデックスを必要とすることに縛られていると考えました。私はあなたがjQueryをより多く使用するにつれて、通常はそのようなことをする必要はないこともわかります。

関連する問題

 関連する問題