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

当所有子li含.hide类时隐藏.woof_container父容器的实现方法

Hide .woof_container when all inner <li> elements have the .hide class

这是个很常见的动态UI需求,根据你的场景,我们需要检查每个.woof_container内的所有.woof_term元素是否都带有.hide类,若是则隐藏整个容器。下面给你两种实现方案:

方案1:原生JavaScript(无依赖)

这种方法不需要引入任何外部库,直接用浏览器原生API就能实现:

// 等待DOM完全加载后执行逻辑
document.addEventListener('DOMContentLoaded', function() {
  // 获取页面中所有的目标容器
  const containers = document.querySelectorAll('.woof_container');
  
  containers.forEach(container => {
    // 提取容器内所有的选项元素
    const termItems = container.querySelectorAll('.woof_term');
    // 检查是否所有选项都带有.hide类
    const allItemsHidden = Array.from(termItems).every(item => item.classList.contains('hide'));
    
    if (allItemsHidden) {
      // 直接隐藏容器,也可以用添加CSS类的方式(更符合样式分离原则)
      container.style.display = 'none';
      // 替代方案:container.classList.add('visually-hidden');
      // 然后在CSS中定义:.visually-hidden { display: none; }
    }
  });
});

方案2:jQuery(适合已引入jQuery的项目)

如果你的项目已经使用了jQuery,代码会更简洁直观:

$(document).ready(function() {
  $('.woof_container').each(function() {
    // 统计容器内不带.hide类的选项数量
    const visibleTermCount = $(this).find('.woof_term:not(.hide)').length;
    // 如果没有可见选项,就隐藏当前容器
    if (visibleTermCount === 0) {
      $(this).hide();
    }
  });
});

动态场景补充(如AJAX加载筛选结果)

如果这些筛选选项是通过AJAX动态更新的(比如WooCommerce筛选插件的异步刷新),需要把检查逻辑放到AJAX完成的回调里,确保新加载的元素能被正确处理:

// 以WooCommerce WOOF插件的AJAX完成事件为例
$(document).on('woof_ajax_done', function() {
  $('.woof_container').each(function() {
    const visibleTermCount = $(this).find('.woof_term:not(.hide)').length;
    if (visibleTermCount === 0) {
      $(this).hide();
    } else {
      $(this).show(); // 确保之前隐藏的容器在出现可见选项时重新显示
    }
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:17:55