You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅选择所有li下input均含disabled类的ul并隐藏对应h5?

解决方法:精准筛选所有子项input均禁用的UL

我明白你的问题了——你现在需要精准找出所有<li>下的<input>都带有disabled类的<ul>,然后隐藏对应的<h5>和该<ul>,但当前代码误把只包含一个禁用输入框的Title 2也移除了。咱们来一步步修复这个问题:

核心思路

问题出在之前的代码可能只是检查了“是否存在禁用的input”,而不是“所有input都被禁用”。正确的逻辑应该是:

  • 对每个<ul>,统计其下所有<li>中的<input>总数
  • 统计其中带有disabled类的input数量
  • 只有当两者数量相等时,才判定这个<ul>的所有input都是禁用的

具体实现代码

这里提供两种写法,你可以根据习惯选择:

写法1:遍历检查每个UL

// 遍历页面中所有目标UL(如果UL有特定类名,替换成$('ul.your-target-class'))
$('ul').each(function() {
  const $currentUl = $(this);
  // 获取当前UL下所有的input元素
  const allInputs = $currentUl.find('li input');
  // 获取带有disabled类的input数量
  const disabledInputCount = allInputs.filter('.disabled').length;

  // 验证:所有input都带有disabled类
  if (disabledInputCount === allInputs.length) {
    // 找到对应的H5(假设H5是UL的前一个同级元素,根据你的实际HTML结构调整)
    $currentUl.prev('h5').add($currentUl).hide();
    // 如果需要彻底移除而不是隐藏,替换成.remove()
    // $currentUl.prev('h5').add($currentUl).remove();
  }
});

写法2:用filter筛选符合条件的UL

这种写法更简洁,适合需要先批量筛选再操作的场景:

// 筛选出所有子项input全为disabled的UL
const targetUls = $('ul').filter(function() {
  const inputs = $(this).find('li input');
  // 返回判断结果:禁用input数量等于总input数量
  return inputs.filter('.disabled').length === inputs.length;
});

// 隐藏对应的H5和UL
targetUls.prev('h5').add(targetUls).hide();

关键注意事项

  • 选择器精准性:如果页面中有其他无关的<ul>,一定要给目标UL加上特定类名(比如<ul class="input-group">),然后用$('ul.input-group')来选择,避免误操作。
  • HTML结构适配:如果你的<h5>不是直接在<ul>的前一个位置(比如两者都在同一个父容器里),需要调整查找H5的方式,比如:
    // 假设H5和UL都在class为"section"的容器里
    $currentUl.closest('.section').find('h5').add($currentUl).hide();
    

内容的提问来源于stack exchange,提问作者Anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:12:04