这就是情况:
<h5>Title 1</h5>
<ul class="filter-group">
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
</ul>
<h5>Title 2</h5>
<ul class="filter-group">
<li><input type="checkbox"></li>
<li><input type="checkbox"></li>
<li><input type="checkbox" class="disabled"></li>
</ul>
<h5>Title 3</h5>
<ul class="filter-group">
<li><input type="checkbox" class="disabled"></li>
<li><input type="checkbox" class="disabled"></li>
<li><input type="checkbox" class="disabled"></li>
</ul>
我只想在LI中的所有输入都="禁用"时隐藏H5和UL。在我的情况下,只有标题3,所有内容都应该消失,但是,我找不到一种检查所有LI及其是否都说课的输入的方法。
这是我的jQuery:
$("ul.filter-group:has(li:has(input.disabled))").prev().hide();
$("ul.filter-group:has(li:has(input.disabled))").hide();
不幸的是,它还删除了标题2,因为它具有一个禁用的输入。如何仅选择每个LI输入的位置。
$(“ul.filter”).each(function() {
var $ul=$(this), $dis=$ul.find("input:disabled"), $input=$ul.find("input");
$ul.toggle($dis.length==0 || ($dis.length>0 && $dis.length<$input.length));
});
我不确定像您正在尝试的1线解决方案,但这将有助于您实现预期
var uls = $('.filter');
$.each(uls, function() {
if( $(this).find('input').length === $(this).find('input.disabled').length ) {
$(this).hide(); $(this).prev().hide();
}
});