javascript - 隐藏所有 div 并显示选中相同类别复选框的 div

标签 javascript jquery html css

尝试构建过滤器。 有一个带有静态元素类和动态生成的元素类的元素列表。

<div class="itemswrap">
 <div class="item dynamic1"></div>
 <div class="item dynamic2"></div>
 <div class="item dynamic3"></div>
 <div class="item dynamic2"></div>
</div>

侧边栏中还有一个带有动态生成的 id 的过滤器菜单

<ul class="subnav">
  <li class="lifilter">
    <input type="checkbox" class="filtercheck" id="dynamic1" />
    <label for="dynamic1">whatever label</label>
  </li>
  <li class="lifilter">
    <input type="checkbox" class="filtercheck" id="dynamic2" />
    <label for="dynamic1">whatever label</label>
  </li>
  <li class="lifilter">
    <input type="checkbox" class="filtercheck" id="dynamic3" />
    <label for="dynamic1">whatever label</label>
  </li>
</ul>

想法是将过滤器 ID 与元素类匹配,一旦选中复选框,只有具有匹配类的 div 应该可见。

这是我想出的一个js代码

$(".lifilter").each(function(){
    var filter1 = $(this).find('.filtercheck').attr('id');
    if ( $(this).find('input.filtercheck').attr('checked') ) 
    {
      $(".itemswrap .item").hide();
      $('.' + filter1).show();
    }
});

然后什么也没发生...

最佳答案

我认为您想在任何复选框状态更改时显示/隐藏 div。尝试将代码包装在复选框的 change 事件中:

$(".filtercheck").on('change', function(){
    $(".lifilter").each(function(){
        var filter1 = $(this).find('.filtercheck').attr('id');
        if ($(this).find('input.filtercheck').attr('checked')) {
            $(".itemswrap .item").hide();
            $('.' + filter1).show();
        }
    });
});

关于javascript - 隐藏所有 div 并显示选中相同类别复选框的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618711/

相关文章:

javascript - fullCalendar 今天按钮自定义行为

javascript - 如何在javaScript中使用SWFUpload读取和写入文件?

jquery - 有一个可以工作的 Jquery 选择器,但在 $.post 中不起作用

javascript - 在 HTML 表单中隐藏或填充依赖的 <select>?

html - 标题按钮是方形的而不是圆形的

javascript - 将带有表单数组的表单转换为有效的 json 对象

javascript - 如何读取本地 JSON 文件

jquery - 我如何创建像 youtube 一样带有悬停的 jQuery UI 按钮

javascript - 使用 JS 创建的 SVG 被裁剪

javascript - 径向进度条