1

jquery を使用して div 内のチェックボックスの数をカウントしたいのですが、div 表示がブロックに設定されている場合のみであり、なしに設定されている場合ではありません。これは、ボタンの押下に基づいて変化します。

私はこれまでにこれを試しました:

$("div:#divid:visible").find('input:checkbox').length
$('input:checkbox:visible').length
$("div:#divid").find('input:checkbox.visible').length

常に発生しているように見えるのは、「visible」を含めると、親 div が display:none または block であるかどうかに関係なく、常に 0 個のチェックボックスをカウントし、「visible」を含めない場合は常にすべてのチェックボックスをカウントすることです。親 div の表示ステータスを無視します。チェックボックス自体には表示プロパティがありません。

4

2 に答える 2

3

あなたは最初のものに余分なものを持ってい:ます、あなたが望む:

$("div#divid:visible").find('input:checkbox').length
//    ^---- No : here

そのdiv先頭の は無意味ですが (無害ですが無意味です) の要素id="divid"が であるdiv場合とそうでない場合があり、そうでない場合はスキップしたい場合を除きますdiv。おそらく、次のとおりです。

$("#divid:visible").find('input:checkbox').length

実際には、次のように呼び出すのではなく、セレクターを 1 つだけ使用して実行できますfind

$("#divid:visible input:checkbox").length

divまた、関連するものがDOMにあり、display上記のコードが実行されたときに確認したい設定があることを確認する必要があることに注意してください.

例 -ライブコピー| ソース

HTML:

<div id="div1">
  <input type="checkbox">
  <input type="checkbox">
  <input type="checkbox">
  <input type="checkbox">
  <input type="checkbox">
</div>
<div id="div2" style="display: none">
  <input type="checkbox">
  <input type="checkbox">
  <input type="checkbox">
</div>

JavaScript:

(function($) {

  display('$("#div1:visible input:checkbox").length = ' + $("#div1:visible input:checkbox").length);
  display('$("#div2:visible input:checkbox").length = ' + $("#div2:visible input:checkbox").length);

  function display(msg) {
    $("<p>").html("<code>" + msg + "</code>").appendTo(document.body);
  }
})(jQuery);

結果:

$("#div1:visible input:checkbox").length = 5

$("#div2:visible input:checkbox").length = 0
于 2013-03-29T10:00:34.257 に答える
0

これを試して

  $("#divid:visible").find('input[type=checkbox]').length;
于 2013-03-29T10:00:55.417 に答える