检查每个LI下的ul输入.Disabled并仅在所有LI输入时才删除UL



这就是情况:

<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();
    }
});

最新更新