你的第一个有额外:
的,你想要:
$("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