1

我想使用 jquery 来计算 div 中复选框的数量,但仅当 div 显示设置为阻止时,而不是设置为无时。这会根据按钮按下而改变。

到目前为止,我已经尝试过:

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

似乎总是发生的是,如果包含“可见”,那么无论其父 div 是 display:none 还是块,它总是计算 0 个复选框,如果我不包括“可见”,它总是计算所有复选框,再次忽略父div的显示状态。复选框本身没有显示属性。

4

2 回答 2

3

你的第一个有额外:的,你想要:

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

尽管div开头的那个是没有意义的(无害,但没有意义),除非元素有时id="divid"可能是 adiv而不是其他时间,如果它不是 a ,你想跳过它div。更有可能的是:

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

虽然实际上,您可以只使用一个选择器而不是调用find

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

另请注意,您需要确保相关div内容位于 DOM 中,并且具有display您想要在上面的代码运行时检查的设置,因为它会及时查看所有内容。

示例 - Live Copy | 来源

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:可见输入:复选框").length = 5

$("#div2:可见输入:复选框").length = 0
于 2013-03-29T10:00:34.257 回答
0

试试这个

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