【问题标题】:Check each li under ul for input.disabled and remove ul only when all li have input.disabled检查 ul 下的每个 li 是否有 input.disabled 并仅在所有 li 都具有 input.disabled 时删除 ul
【发布时间】:2018-07-30 00:37:17
【问题描述】:

情况是这样的:

<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 中的所有输入都为 class="disabled" 时,我才想隐藏 h5 和 ul。在我的场景中,只有 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?

【问题讨论】:

  • 你没有任何叫做过滤组的东西
  • 我的错,ul 类实际上是 filter-group

标签: jquery html-lists hide html-input


【解决方案1】:
$(“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));
});

【讨论】:

    【解决方案2】:

    我不确定像您正在尝试的 1 线解决方案,但这将帮助您实现预期

    var uls = $('.filter');
    $.each(uls, function() {
        if( $(this).find('input').length === $(this).find('input.disabled').length ) {
            $(this).hide(); $(this).prev().hide();
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2013-12-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多