【发布时间】:2020-09-02 17:31:04
【问题描述】:
我正在尝试通过数据属性过滤 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>
我尝试了各种选项来过滤每个项目,但似乎没有任何效果。
有什么想法吗?
【问题讨论】:
-
这是因为数据颜色是一个字符串。您应该拆分颜色并检查数组是否包含颜色而不是 == 数据颜色
-
var $q = $(this).attr('data-colors').split(', ');...item.values().colors.some(x=>$q.some(y=>y==x))或每一个取决于它们是否都必须包含在内
标签: javascript filter listjs list.js