javascript - List.js - 按超过 1 个键/值/答案的属性过滤
问题描述
我正在尝试通过数据属性过滤 List.js 列表,其中结果有多个答案:
<div data-colors="red, blue, green">Item Name</div>
当我尝试以下操作时,它不会搜索每个项目:
$('.filter').on('click',function(){
var $q = $(this).attr('data-colors');
if($(this).hasClass('active')){
myList.filter();
$('.filter').removeClass('active');
} else {
myList.filter(function(item) {
if (item.values().colors == $q) {
return true;
} else {
return false;
}
});
$('.filter').removeClass('active');
$(this).addClass('active');
}
});
如果我在只有一个结果时尝试它,那么它可以正常工作:
<div data-colors="red">Item Name</div>
我尝试了各种选项来过滤每个项目,但似乎没有任何效果。
有任何想法吗?
解决方案
我刚刚为一个客户的项目做了这个分析。我们想要一个简单的复选框输入系统。困境是无序列表中的单个元素可能具有多个角色(数据颜色)。我选择了一个二进制值来表示这一点。过滤器使用了一个简单的按位与函数。这运作良好。
完整代码在这里。
演示,通过 CodeSandBox 在这里。 请务必查看控制台日志以了解过滤事务。
关键功能在这里:
var teamKey = 16 + 8 + 4 + 2 + 1;
function OnChangeCheckbox(checkbox, listObj) {
if (checkbox.checked) {
console.log("The check box is checked. " + checkbox.value);
teamKey += parseInt(checkbox.value, 10);
} else {
console.log("The check box is not checked.");
// remove value from teamArray
teamKey -= parseInt(checkbox.value, 10);
}
console.log("teamKey: " + dec2bin(teamKey));
listObj.filter(filterList);
}
function filterList(item) {
console.log("indiv value: ", dec2bin(item.values().teams), " teamKey: ", dec2bin(teamKey) )
console.log( " Bitwise And: ", dec2bin(item.values().teams & teamKey));
if (item.values().teams & teamKey) { // the magic is here
console.log(" pass: ", item.values().teams & teamKey);
return true;
} else {
console.log(" fail: ", item.values().teams & teamKey);
return false;
}
}
列表元素<div class="teams">XX</div>
将通过display: none;
使用中的 CSS 隐藏。
推荐阅读
- html - 如何快速将引导按钮转换为 png 图像文件?
- postgresql - EF Core 2.0 更新 - 跟踪问题
- c++ - 在 Visual c++ 中使用 WebRTC 库
- r - 遵循模式时按名称获取列索引
- python - 如何使用 python 获取 FTP 的当前工作目录
- javascript - this.props.history.router 不适用于 websocket 的第一个触发器
- dart - 如何在 Fluro 或 Flutter 路由导航器中传递对象或对象列表?
- visual-studio-code - 我正在使用 PyGame 在 python3.6.5 中创建蛇游戏。这是初始代码,它在 PyCharm 上运行良好。但是我在 VSCode 中遇到了问题
- ruby-on-rails - Ruby on Rails,Api::UsersController#create 中的 Net::SMTPAuthenticationError
- jenkins - Jenkinsfile 的字符串插值和连接