情况就是这样:
<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>
我想隐藏h5和ul只有当li中的所有输入都有class =&#34; disabled&#34;时。在我的场景中,只有Title 3及其中的所有内容都应该消失,但是,我无法找到一种方法来检查所有li及其输入是否都有所说的类。
这是我的jquery:
$("ul.filter-group:has(li:has(input.disabled))").prev().hide();
$("ul.filter-group:has(li:has(input.disabled))").hide();
并且不幸的是它也删除了标题2,因为它有一个被禁用的输入。我如何只选择每个li有input.disabled的ul?
答案 0 :(得分:0)
$(“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 :(得分:0)
我不确定您正在尝试的1行解决方案,但这将帮助您实现预期的
var uls = $('.filter');
$.each(uls, function() {
if( $(this).find('input').length === $(this).find('input.disabled').length ) {
$(this).hide(); $(this).prev().hide();
}
});