0

私はそのようなコードを持っています。フォームに4セットのチェックボックスがあり、各セットはこの機能を個別に実行する必要があります。ID変数は、各セットの周囲に配置された特定のdivのIDです。

 $('#'+id+' input[type=checkbox]:checked').each(function() {
     var value = $(this).val();
         (...)
 });

Chrome、Firefox、IE9で問題なく動作します。IE7/8では動作しません。

IE7 /8thoで動作するのはこれです

$('input[type=checkbox]:checked').each(function() {
     var value = $(this).val();
         (...)
 });

したがって、div識別子なしで機能します。IE7 / 8に、どのチェックボックスを通過させたいかを伝える必要があります。古いIEで機能するように、そのdiv識別子にどのように対応する必要がありますか?

4

3 に答える 3

2

以下のように使用してみて.findください.filter

$('#'+id).find('input[type=checkbox]').filter(':checked').each(function () {
 //..

:checkbox長い代わりに使用できますinput[type=checkbox]

$('#'+id).find(':checkbox').filter(':checked').each(function () {
于 2012-05-09T20:08:21.517 に答える
2

チェックボックスがグループまたはセットで編成されている場合、私が通常これを行う方法は、チェックボックスグループに配列名を追加し、それをjQueryで使用することです。

<input type="checkbox" name="groupone[]"/>
<input type="checkbox" name="groupone[]"/>

<input type="checkbox" name="grouptwo[]"/>
<input type="checkbox" name="grouptwo[]"/>

そしてjQueryでは:

$('input[name="groupone[]"]').filter(':checked')
于 2012-05-09T20:11:05.570 に答える
1

ページにそのIDを持つ要素が複数ある場合は、IEがその要素を窒息させている可能性があります。しかし、私が通常あなたがしていることに使用するパターンは、次のようなものです。

$('#' + id)
  .find('input[type=checkbox]:checked')
  .each(function() { /...

.find(':checkbox:checked')2行目の代わりに使用できますが、上記のコードを使用するとパフォーマンスが向上するはずです。効率を向上させる最新のブラウザでネイティブメソッドを[type=checkbox]使用できます。また、明らかにjQueryは、div内のすべての要素をチェックして、入力されていない要素(チェックボックスにはなれない可能性があります)も含めて、一致するかどうかを確認します。これはjQueryの最新バージョンで解決された可能性がありますが、私が知っていることではありません。.find(':checkbox'):checkbox

于 2012-05-09T20:22:20.233 に答える