使用列表项的多重过滤器逻辑

2024-04-25

以下代码将搜索任何重复的类<li class="duplicate duplicate">在无序列表中的列表项中,它将显示结果.show() and .hide()其他的。

当前版本

目前它适用于两种场景

First

它显示具有相同类别(至少一个或多个)的任何列表项。

Second

显示列表项类重复项,但我们可以指定它是哪个类。例如查找并显示类 .red 的重复项

我已经把一切都准备好了并开始进行。

var $rows = $(".myList").find(".list_entry");

$("#show_red").on("click", function() {
  $rows.hide().filter(".red").show();
});

$("#reset").on("click", function() {
  $rows.show();
});

function uniqueValues ( array ) {
  return array.reduce(function(result, value){
    if (result.indexOf(value) < 0) result.push(value);
    
    return result;
  }, []);
}

$("#duplicates").on('click', function() {
  $rows.hide().filter(function(){
    //get the classes, ignoring repeated whitespace
    var classes = this.getAttribute('class').split(/\s+/);
    //get the unique classes
    var uniqueClasses = uniqueValues(classes);
    //return true if the unique classes are less than the classes
    return classes.length != uniqueClasses.length;
  }).show();
});

$('.show_duplicate').on('click', function () {
  //get the specific class we want to show duplicates for
  var targetClass = this.getAttribute('data-color');
  
  $rows.hide().filter(function(){
    //get the classes, ignoring repeated whitespace
    var classes = this.getAttribute('class').split(/\s+/);
    //get count of targetClass
    var classCount = classes.filter(function(className){ return className === targetClass; }).length;
    //return true if the unique classes are less than the classes
    //and the specific class appears multiple times
    return classCount > 1;
  }).show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="duplicates">Display Duplicates</button>
<button id="show_red">Show Only Red</button>
<button id="reset">Reset</button>

</button>

<ul class="myList">
    <li class="list_entry  red red blue class1"><span style="border-color:red;"></span><span style="border-color:red;"></span><span style="border-color: blue;"></span></li>
    <li class="list_entry  red red orange class1A"><span style="color:red;"></span><span style="border-color:red;"></span><span style="color:orange;"></span></li>
    <li class="list_entry  red blue blue class2"><span style="color:red;"></span><span style="color:blue;"></span><span style="color:blue;"></span></li>
    <li class="list_entry  pink class3"><span style="color:pink;"></span></li>
    <li class="list_entry  orange orange red class4"><span style="color:orange;"></span><span style="color:orange;"></span><span style="color:red;"></span></li>
    <li class="list_entry  black white class5"><span style="color:grey;"></span><span style="color:black;"></span></li>
    <li class="list_entry  white white class6"><span style="color:grey;"></span><span style="color:grey;"></span></li>
    <li class="list_entry  black orange class7"><span style="color:black;"></span><span style="color:orange;"></span></li>
</ul>
<style>
span{
    border-style: solid;
    margin: 1px;
    padding: 1px;
}

li{
    margin:15px;
}
</style>

我想要实现什么

真实例子(游戏例子):

我们有一组按钮可以过滤列表项。列表项将按类属性进行过滤。

过滤器按钮示例

Leveling filters : Level_1, Level_2, Level_3, Level_4, Level_5
Rewards : Experience, AnotherTypeOfExperience, AndAnotherExp
AdditionalRewards : Item1, Item2, Item3
MissionZone : City, Suburbs
MissionType : Defence, Offense

示例<li class="Level_1 City Defence Item1 Item1 Item3"></li>

用户选择以下过滤器示例:

Show me (Level_1 OR City OR Defence AND) Item1 OR Item3
Show me (Level_1 AND) Duplicates Of Item1
Show me (Level_2 OR Defence AND) Item2
Show me (Level_1 AND City AND) Item2 OR Duplicates of Item2

大概的概念 :Show me (Leveling filters $filter_logic MissionZone $filter_logic MissionType (AND -fixed)) Rewards $filter_logic Rewards/AdditionalRewards

因此 Leveling 过滤器、MissionZone、MissionType 是过滤器集 1 奖励过滤器是过滤器组 2。

示例1

filterset1 = [level_1,city];
filterset2 = [Item1,Duplicates];
$filter_logic = AND;

    show : (Level_1 AND City) 1 AND (Item1 AND Duplicates)
             |                   /\            | 
          filterset1         fixed AND    filterset2 

示例2

 filterset1 = [level_1,city];
filterset2 = [Item1,Duplicates];
$filter_logic = AND;

    show : (Level_1 OR City) 1 AND Item1 OR Duplicates
                        |       /\            | 
          filterset1         fixed AND    filterset2 

我什至不知道如何开始。如果您有任何提示,请分享。


None

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

使用列表项的多重过滤器逻辑 的相关文章

  • jQuery 日期选择器 - 时区问题

    我们在网站上使用 jQuery 日期选择器来选择预订的日期和时间 日历当前设置为太平洋标准时间 当用户尝试从其他时区访问时 这会导致错误 我们是否应该将服务器设置为 UTC 并让应用程序根据用户的 IP 地址自动选择用户的时区 我很好奇我们
  • 使用什么事件来在选择文本框中的值时显示警报消息

    我正在使用 jquery 的自动完成 api 来从数据库中获取名称 但是我想在从显示的文本框中选择名称时显示一条警报消息 我将显示一个图像以便更好地理解 当我输入 S 时 它将显示所有包含 S 的记录 所以问题是 如果我选择例如 Spars
  • 如何在 jQuery 中使用 CSS“background-image”属性添加的图像上绑定单击事件

    这是我的小提琴link http jsbin com otisur 1 edit 我想我的问题通过标题本身就很清楚了 尽管如此 我正在寻找一种绑定的方法click使用 css 添加的图像上的事件background image财产 我知道
  • 动态检测屏幕高度和屏幕宽度,以精简图像的高度和宽度

    我以前可以display a div标签仅在portrait使用下面提到的代码corrl https stackoverflow com users 15388872 corrl in this https stackoverflow co
  • jQuery - 拖动div css背景

    我希望能够在 div 内按住鼠标并移动它的背景 在谷歌上搜索了很多 没有找到我想要的 这是目标 显示的地图是要拖动的对象 http pontografico net pvt gamemap http pontografico net pvt
  • 使用 jQuery 解析无效的 HTML,而不添加到 DOM?

    我正在开发一个使用 HTML 模板的 jQuery 插件 最终用户可以传入一个最简单级别的模板 如下所示
  • jQuery - 未捕获类型错误:对象 # 没有方法“parent”

    我的代码有问题 Chrome代码光谱仪说第21行有问题 问题如下 Uncaught TypeError Object
  • 最佳性能 + jQuery Ajax + Div 刷新

    有人对 jQuery Ajax 刷新 DIV 的最佳选择有好的建议吗 以下是我想要实现的目标 强调性能优化 左边会有导航 就像Google Facebook一样 右边有内容窗格 DIV 当用户点击每个导航时 内容窗格将相应刷新 而不刷新整个
  • 缩小 DIV 和所有子元素

    我想在我的设计中重新调整部分 HTML 的大小 我需要以动画的形式进行此更改 DIV 本身及其所有内部元素 即图像 段落 锚点等 应该重新调整大小 就像调整具有恒定纵横比的图像大小一样 我认为 该工具应该获取元素的当前高度和宽度并增加 减少
  • 选择倒数第二个元素

    我需要选择倒数第二个输入可选元素的值 tr td td tr
  • zone.js:140未捕获类型错误:无法读取属性“删除”

    我是 kendo ui 的新手 我在小提琴中开发了原型 删除确认窗口在那里工作正常 但是当我集成到我的代码库中时 我收到错误 Cannot read property remove at the line pai to delete rem
  • 在 ajax 请求上启用 jQuery contextMenu 项

    我正在尝试更新上下文菜单 http medialize github com jQuery contextMenu docs htmlitem 如果 ajax 请求改变了我的 div 内容 这就是我的意思 我有一个这样的 div div c
  • 我可以使用 jQuery 的 AJAX 将表单信息提交到 Google Spreadsheets 吗?

    我喜欢能够使用谷歌电子表格 但以视觉方式集成到我的网站中很棘手 所以我想我会重新创建他们的表单 一个简单的剪切 粘贴 通过 AJAX 提交表单 数据将转到电子表格 我可以将我的用户重定向到比谷歌默认的 谢谢你所做的一切 更漂亮的东西你刚刚做
  • 指定 HTML5 输入类型 = 日期的值输出?

    我想将本机日期选择器添加到我的应用程序中 该应用程序当前使用遗留的本地系统 日期输入支持尚未广泛普及 但如果我可以基于兼容性提供这两种实现 那就太理想了 有没有办法指定 HTML 日期选择器给出的值的输出 歌剧的默认设置是yyyy mm d
  • 无法从 JQuery ajax 调用接收 JSON

    我已经确定来自服务器的 JSON 是有效的 手动进行 ajax 调用 但我真的很想使用 JQuery 我还使用 firebug 确定发送到服务器的 post URL 是正确的 但是 错误回调仍然被触发 解析错误 我还尝试了数据类型 文本 我
  • jQuery 相当于 underscore.js 的 groupBy

    jQuery 中是否有一个内置函数可以执行相当于http underscorejs org groupBy http underscorejs org groupBy 有什么解决方法吗 Thanks 不 jQuery 不是为数据处理而设计的
  • jQuery DataTables:隐藏最后一行的“删除”按钮

    我有一个DataTable在某些情况下可以返回多个页面 返回的每一行都显示一个删除按钮 但我需要它在返回的最后一行上隐藏此按钮 无论是 1 pg 还是多个 因此不能在其中使用 CSS 我想学习如何实现这一点 因为DataTables对我来说
  • 有序 JSON 对象

    我有一个 servlet 它与数据库通信 然后返回有序 按时间排序 对象的列表 在servlet部分 我有 access DB returns a list of User objects ordered ArrayList users M
  • Radiobutton-带有纯 html/css 的按钮

    是否可以创建像这样的单选按钮JQuery http jqueryui com demos button radio那些 用纯html css thanks 试试这个小提琴 http jsfiddle net mcXm7 1 http jsf
  • YouTube 点击时禁用 HTML5

    有没有办法让我们通过javascript禁用HTML5视频的 播放 暂停 点击全屏 功能 然后在我们再次需要时将其放回去 我不知道你是否可以禁用它们 但你可以使用 css 删除它们 video webkit media controls f

随机推荐

  • 检测windows上的核心数

    如果我在 Linux 或 Mac 上运行 R 我可以使用以下命令检测可用内核的数量multicore detectCores 但是 没有 Windows 版本的多核功能 因此我无法在 Windows 上使用此技术 如何从 R 中以编程方式检
  • 从 Perl 守护程序运行时,为什么 FFMpeg 在五秒后停止?

    我用 Perl 编写了一个小守护程序 它调用 FFMpeg 对视频进行编码 但编码在 5 秒左右后停止 我用这段代码来启动它 my t echo ffmpeg command gt gt self gt FFMPEG OUTPUT my l
  • 在 flutter 应用程序中实现轮廓文本字段输入和标签文本

    我想要一个带有边框的文本字段输入 边框内有标签 如下图所示 先感谢您 我想你想要实现这样的目标 Inactive Active Validation 您可以使用此小部件来实现此设计 class OutlineBorderTextFormFi
  • y -= m < 3 是什么意思?

    在查看一些示例 C 代码时 我发现了这一点 y m lt 3 这是做什么的 它是某种压缩的 for 循环之类的吗 据我所知 用谷歌搜索是不可能的 m lt 3或者是1 or 0 取决于真值 So y y 1 when m lt 3 is t
  • golang - 省略 json 属性进行序列化的优雅方法

    我有一个用户结构 其中包含密码等敏感字段 type User struct UID string json uid binding required Password string json password binding require
  • T-SQL-在单个查询中包含计数总和(*)

    使用表 i 以及字段 date entered 和 code 我编写了一个查询来列出每年 code 12A 的计数 select distinct year date entered as Yr count as Cnt from i wh
  • 如何使用 JavaScript 四舍五入到任意数量的有效数字?

    我尝试了下面的示例代码 function sigFigs n sig if n 0 return 0 var mult Math pow 10 sig Math floor Math log n lt 0 n n Math LN10 1 r
  • 在 Converter 中将 JSF 日历日期转换为 JodaTime

    JodaTime 可能是最好的日期和时间库 因此 我很想从后台 bean 的 JodaTime 实例中的前端 xhtml Calendar 小部件接收用户输入 因此我正在考虑使用 JSF Converter 来完成这项工作 这样做明智吗 同
  • 在node.js 中创建链式方法?

    是否可以在 Node js 中创建像这样的异步链式方法 File create file jpg rename renamed jpg append Hello World 也就是说非阻塞 你基本上想要abstractAPI 上的文件处理操
  • ShapeDrawable 中的偏移形状

    我正在尝试使用扩展 ShapeDrawable 的类来绘制一个带有边框的圆角矩形 请参阅here https stackoverflow com questions 2145131 trying to draw a button how t
  • 有没有基于bootstrap的可视化网页编辑器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在完全自动反转重复周期之间延迟 SwiftUI 中的重复动画

    我正在 SwiftUI 中构建一个 Apple Watch 应用 它可以读取用户的心率并将其显示在心形符号旁边 我有一个动画可以让心形符号反复跳动 由于我知道实际用户的心率 因此我希望使其以与用户心率相同的速率跳动 并在每次速率变化时更新动
  • GAM SDK 测试安装后不显示 Gmail 上下文小工具

    在 Google Apps Marketplace SDK 中测试安装流程后 我无法在 Gmail 中看到上下文小工具 以下是我创建项目所采取的步骤 以域管理员身份登录 创建 Google Apps 控制台项目 创建 OAuth2 客户端
  • 如何在 Angular 6+ 中的本地计算机上运行 Dist 文件夹?

    我正在构建应用程序Angular6 现在我运行命令ng build prod这给了我一个 dist 文件夹 如何在本地主机上检查或提供该文件夹 你可以使用http服务器 https www npmjs com package http se
  • 如何列出已安装的 go 软件包

    据我所知go distribution带有某种package manager After go 1 4 1我已经运行的安装go help为了找到任何能够列出本地安装的子命令go packages 但不幸的是没有 那么该怎么做呢 goinst
  • python: from x import y 改变之前的导入结果

    我试图理解 python 中的包和模块名称隐藏规则 并偶然发现了一种情况 我不明白为什么我看到的结果有意义 这种情况发生在 python 2 中 from future import absolute imports 和Python 3 假
  • HTML5 视频在移动浏览器上自动播放

    我使用以下 HTML5 和 JQuery 代码来播放 URL 位于数组 URLArray 中的视频播放列表 function NextFrag if index lt URLArray length VideoContainer html
  • PHP 数组表示法中的大括号

    我刚刚遇到了一段非常奇怪的 php 代码 oink pig 1 var dump oink oink pig 123123 echo oink pig gt 123123 echo oink pig gt 123123 它的工作原理类似于数
  • TypeScript + NodeJS readline 属性缺失

    我正在使用 TypeScript 开发一个小项目tsc v 2 4 2和节点 v6 10 3 我想在 CLI 中捕获按键 所以我尝试import as readline from readline 然后稍后使用readline emitKe
  • 使用列表项的多重过滤器逻辑

    以下代码将搜索任何重复的类 li class duplicate duplicate 在无序列表中的列表项中 它将显示结果 show and hide 其他的 当前版本 目前它适用于两种场景 First 它显示具有相同类别 至少一个或多个