同位素 v2 网格 - 多个过滤器 - 隐藏空过滤器

2024-03-07

我当前的同位素网格有两个下拉过滤器,用于对网格项目进行排序。第一个过滤器是菜单类型,第二个过滤器是饮料类型。然而,每种菜单类型并不包含所有饮料类型,因此当选择某些过滤器配置时,不会显示任何结果,这是正确的。但我想通过当用户选择第一个过滤器时阻止这种情况发生,第二个过滤器隐藏空类型。

当前过滤器的工作 Codepen:https://codepen.io/whitinggg/pen/zYGEaNb https://codepen.io/whitinggg/pen/zYGEaNb

这是我的旧过滤器代码:

// Select Filters
jQuery(function ($) {
    var $grid = $('.grid');
    var $selects = $('div#filterGroup select').change(function() {
        var selector = $selects.get().map(function(el) { // map the select elements ...
            return $(el).val(); // ... to an array of values
        }).join('') || '*'; // if joined array is empty-string, then default to a single '*'
        $grid.isotope({
            'filter': selector
        });
        return false;
    });

    $grid.imagesLoaded().progress( function() {
      $grid.isotope('layout');
    });
  });

我尝试将互联网上有关此主题的其他链接的代码更改为以下代码,但没有运气让它工作。

// Select Filters
jQuery(function ($) {
    var $grid = $('.grid');
    var $selects = $('div#filterGroup select').change(function() {
        var selector = $selects.get().map(function(el) { // map the select elements ...
            return $(el).val(); // ... to an array of values
        }).join('') || '*'; // if joined array is empty-string, then default to a single '*'
        $grid.isotope({
            'filter': selector
        });
        return false;
    });

//Hide Empty Filters
    var DROP = $('div#filterGroup select option:not([data-filter=""])');
    // list of all class in html
    var strall = ''; $('.grid-item').each(function(el){ strall += $(this).attr('class')  });
    // remove select if not in strall.. TODO : needs improvement, this is kind a hack
    DROP.each(function(el){
      var nowfilter = $(this).attr('data-filter').replace('.', ''); // co_kenya
      if( strall.indexOf( nowfilter ) == -1 ){
        console.log( 'this one is missing ' + nowfilter );
        $(this).remove();
      }
    });

    $grid.imagesLoaded().progress( function() {
      $grid.isotope('layout');
    });
  });

这可能吗?非常感谢任何帮助!


工作代码笔 https://codepen.io/codebling/pen/NWqyqKq

首先,为每个下拉列表添加一个ID,以便我们区分它们。

<select id="menu-selector" class="filter option-set" data-filter-group="menu">
[...]
<select id="type-selector" class="filter option-set" data-filter-group="categories">

然后,为每个下拉列表添加一个更改侦听器。我们将查看菜单下拉更改侦听器的代码。

首先,从选定的下拉列表中获取类过滤器:

 $('#menu-selector').change(function() {
     var selectedClass = $('#menu-selector option:selected').attr('value');

然后我们将选择与该类型匹配的所有网格项,以查看它们还有哪些其他类。这些其他类将是可用的类型

     var availableTypes = $(`.grid-item${selectedClass}`)
       .toArray()
       .flatMap(div => Array.from(div.classList.values())) //get all of the classes
       .filter(i => !['grid-item', selectedClass.substring(1)].includes(i));  //eliminate useless ones

最后,切换disabled属性在另一个下拉列表中,仅启用那些可用的。

     $('#type-selector option')
         .each( (i,el) => $(el).prop('disabled', el.value != ""  && !availableTypes.includes(el.value.substring(1))));

应该可以做到这一点。类型下拉列表的更改处理程序是相同的,但引用相反的下拉列表。查看代码笔 https://codepen.io/codebling/pen/NWqyqKq了解详情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同位素 v2 网格 - 多个过滤器 - 隐藏空过滤器 的相关文章

随机推荐

  • Firebase 注销用户所有会话

    我在我的 iOS 应用程序中使用 Firebase 身份验证 当用户使用 Firebase 登录我的应用程序然后注销该用户的所有其他设备 会话 时 Firebase 有什么方法吗 我可以使用 Firebase 管理 SDK 来做到这一点吗
  • 如何使用 Go 不将空结构封送到 JSON 中?

    我有一个这样的结构 type Result struct Data MyStruct json data omitempty Status string json status omitempty Reason string json re
  • 谷歌分析:dataLayer.push 不起作用?

    基于此线程 使用 Google 跟踪代码管理器跟踪事件 https stackoverflow com questions 18192982 tracking events using google tag manager 18194823
  • 使用 GL_POLYGON 绘制圆的纹理映射

    我正在尝试使用将纹理映射到圆形GL POLYGON使用此代码 void drawCircleOutline Circle c int textureindex float angle radian x y values needed by
  • 如何在主窗体之前显示设置配置的窗体?

    在我的项目中我有两个表单 form1 form2 form1是配置表单 我想显示 Form1 当我们单击 Button1 时 然后显示 Form2 和释放 释放 Form1 我该怎么做 我用这个代码 但是这个项目启动然后自动退出 一位朋友说
  • 双打会遭受溢出吗?

    双精度浮点数或浮点数是否可能发生溢出 环绕 如果在 x86 或 x64 硬件上达到最大值 或最小值 会发生什么情况 在符合 IEEE 754 标准的系统上 溢出会导致特殊的 无穷大 或 负无穷大 值 超过该值 任何进一步的增量都将不起作用
  • 词汇分散图是seaborn

    我正在使用 seaborn 模块来生成类似于下面示例的图 import pandas as pd import matplotlib pyplot as plt import numpy as np import seaborn as sn
  • 如何将特定文件类型从一个文件夹复制到另一个文件夹

    如何将特定文件类型从一个文件夹复制到另一个文件夹 同时保留文件夹结构 以下批处理命令能够将特定文件类型复制到文件夹 但无法保留文件夹结构 for R c source f in cpp h do copy f x destination 我
  • 每个 Java 应用程序是否有一个 JVM?

    所有运行的 Java 应用程序都使用相同的 JVM 还是 每个 Java 应用程序一个 JVM 适用 假设应用程序是 IntelliJ IDEA 服务器和 NetBeans 此外 每个Java应用程序分配的JVM和使用的进程之间是否有任何联
  • AS3 - 缩放位图数据

    我想将 BitmapData 缩放到不同的大小 例如 200 400 600 和 800 有什么好的方法可以做到这一点 你不能直接缩放BitmapData但你可以对其进行缩放克隆 这是一个缩放的简单示例BitmapData package
  • 在 pkg-config 搜索路径中找不到 OpenCV 包

    我已经按照中的说明安装了 OpenCVhttps help ubuntu com community OpenCV https help ubuntu com community OpenCV sudo su sudo apt get in
  • 检索当前正在运行的应用程序的导航历史记录

    我想要一种方法来向用户显示他当前在应用程序中的位置 例如 如果我有activity A activity B activity C等等 如果他导航到activity E 例如 他应该能够看到他如何登陆当前屏幕的历史记录 从Home gt E
  • ASP.Net MVC 4 捆绑包

    我见过的很多代码都引用了这个 section Scripts Scripts Render bundles jqueryval 这很棒 而且它可以工作 如果包含 某些东西 我是否必须添加参考才能获取这些 使用 NuGet 复制 DLL 这是
  • C++ 全局初始化可以有多懒?

    我习惯于认为全局 静态类成员的所有初始化都发生在 main 的第一行之前 但我最近在某处读到该标准允许稍后进行初始化以 协助模块的动态加载 在动态链接时我可以看到这是真的 我不希望在 dlopen 库之前初始化库中初始化的全局变量 然而 在
  • 有没有办法在 return 语句之后做更多的工作?

    我有点好奇返回结果后是否可以在函数中做更多的工作 基本上 我正在使用金字塔框架 只是用 python 编码 创建一个网站 在处理输入后 我返回变量来渲染页面 但有时我想在渲染页面后做更多工作 例如 您访问我的网站并更新您的个人资料 您所关心
  • BigQuery 数据集通配符?

    我用过tableBigQuery 中的通配符功能 但是否可以使用通配符跨多个查询datasets在一个项目内 不 目前这是不可能的 技术原因之一是 如果表通配符跨越数据集 查找涉及的表会更加困难
  • html文本框形式不允许输入

    html 表单中是否有任何类不允许您在该文本框中输入或更改值 但你可以看到它的内容 例如下面的代码将允许你看到mysql数据库中记录的内容 但我想要的是它不被编辑 我将在下面的代码中添加什么 以便用户不会编辑其内容 tr td font s
  • 使用 ListAdapter 填充 ScrollView 布局内的 LinearLayout

    我面临一个非常常见的问题 我布置了一个活动 现在发现它应该显示其中的一些项目ScrollView 通常的方法是使用现有的ListAdapter 将其连接到ListView and BOOM我会有我的物品清单 BUT你不应该放置一个嵌套的Li
  • 如何在 Eclipse 中指定预处理器指令?

    Eclipse 中如何为不同的配置指定预处理器指令 例如 如果我有多个电源 应该以不同的配置运行并指定 ifdef Problem1 main func endif Problem1 请注意 这是托管 makefile 的情况 The 文档
  • 同位素 v2 网格 - 多个过滤器 - 隐藏空过滤器

    我当前的同位素网格有两个下拉过滤器 用于对网格项目进行排序 第一个过滤器是菜单类型 第二个过滤器是饮料类型 然而 每种菜单类型并不包含所有饮料类型 因此当选择某些过滤器配置时 不会显示任何结果 这是正确的 但我想通过当用户选择第一个过滤器时