javascript - 使用类显示和隐藏 div

标签 javascript jquery

我编写了下面的脚本,在单击复选框时显示和隐藏 div。它获取复选框值,然后用该类隐藏 div。我的问题是一个 div 可能被标记有两个复选框值。如果仍然勾选其中一个,我仍然希望显示 div 而不是像我的脚本当前那样隐藏。解决方法是什么?

HTML

    <fieldset class="simple-filter">
        <div class="filter-wrap">
            <input type="checkbox" class="filter-click" name="bmx" value="bmx" checked>
            <label for="bmx">BMX</label>
        </div>
        <div class="filter-wrap">
            <input type="checkbox" class="filter-click" name="scooter" value="scooter" checked>
            <label for="scooter">Scooter</label>
        </div>
        <div class="filter-wrap">
            <input type="checkbox" class="filter-click" name="quad" value="quad" checked>
            <label for="quad">Quad/Inline</label>
        </div>
    </fieldset>
    
    <div class="simple-filter-items">
        <div class="bmx scooter">box 1</div>
        <div class="bmx">box 2</div>
        <div class="quad">box 3</div>
    </div>

脚本:

    jQuery(document).ready(function($){
    
      $( ".filter-click" ).change(function() {
    
        checkboxval = $(this).val();
    
        $(".simple-filter-items").find("." + checkboxval).toggle();
    
      });
    
    });

fiddle 在这里 https://jsfiddle.net/h5as3cwb/

最佳答案

您可以使用 each 循环遍历 checked 复选框并显示复选框被选中的 div

演示代码:

jQuery(document).ready(function($) {
  $(".filter-click").change(function() {
    //hide all div
    $(".simple-filter-items div").hide()
    //loop throgh checked checkboxes
    $(".simple-filter input[type=checkbox]:checked").each(function() {
      //show them
      $(".simple-filter-items").find("." + $(this).val()).show();
    })
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<fieldset class="simple-filter">
  <div class="filter-wrap">
    <input type="checkbox" class="filter-click" name="bmx" value="bmx" checked>
    <label for="bmx">BMX</label>
  </div>
  <div class="filter-wrap">
    <input type="checkbox" class="filter-click" name="scooter" value="scooter" checked>
    <label for="scooter">Scooter</label>
  </div>
  <div class="filter-wrap">
    <input type="checkbox" class="filter-click" name="quad" value="quad" checked>
    <label for="quad">Quad/Inline</label>
  </div>
</fieldset>

<div class="simple-filter-items">

  <div class="bmx scooter">box 1</div>
  <div class="bmx">box 2</div>
  <div class="quad">box 3</div>
</div>

关于javascript - 使用类显示和隐藏 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65410301/

相关文章:

javascript - 触发点击功能不正常

jquery - 如何使全局滚动条仅适用于一个元素

javascript - AngularJS 路由不起作用

javascript - 用于删除无效 HTML 标记之间的空格的正则表达式 - 即 "</b >"应为 "</b>"

javascript - JS 正则表达式不返回所有匹配的组

javascript - 我在运行简单的react.js应用程序时遇到一些错误..有什么想法吗?

javascript - 动态添加div

javascript - 如何从另一个函数停止/暂停一个函数?

javascript - 停止更改单选按钮,显示弹出窗口,然后更改单选按钮

c# - C# ASP.NET 的级联下拉菜单