问题描述
我使用过滤方法,它做的一切都是正确的,但是在过滤之前我有很多循环来“冻结”我的网站一秒钟 - 两个。 我想改进它,但我不知道它是最好的。
在这种情况下,我使用 jQuery,但我可以将该代码转换为 Vanilla JS,这没问题。
所以,
当我选中多个筛选复选框中的一个时,该值将被推送到一组项目中,我使用其参数来过滤项目。
let choosenValuesDesk = []; // array of items
$(".aside-sortwidget input:checkBox").change(function() { // runs when is checkBox touched
if($(this).is(":checked")) { // add to array
...
choosenValuesDesk.push(chooseMe); // choose me is item,prepared for filtration,variable from above ...
$(".desktop-slider__item").each(function(i,obj) { // loop slider items for filtration,btw,here is that "freeze"
choosenValuesDesk.map((val) => { // loop items from array above to filter items in each function
...
if($(this).data().filter.includes(val)) { // if this slider item has value from chosen checkBox value in data attribute
$(this).addClass("keep-this-slide"); // keep slider item
} else {
$(this).removeClass("keep-this-slide");
// else remove class and "hide" item...
}...
}
}
} else { // remove from array it's same process from above to uncheck checkBox
}
});
顺便说一句。我使用了 slick-slider 过滤方法,这会不会有问题?
成功过滤的代码示例:
$(".desktop-slider")
.slick("slickUnfilter")
.slick("slickFilter",".keep-this-slide");
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)