javascript - 在自定义下拉列表中选择“全部”选项时,如何不显示“清除过滤器”?
问题描述
在此下拉菜单中,如果选择了过滤选项,我可以选择显示“清除过滤器”文本。如果我单击“清除过滤器”,它就会消失,所有卡片都会返回。
我遇到的问题是,如果使用“全部”选择,我不想显示“清除过滤器” 。如果选择“全部”,则应显示所有卡片。
完整的Codepen在这里。
我的重点领域是:
//clear selection
function clearSelection() {
document.querySelector(".custom__select-wrapper .story-sel h6").textContent = "STORY TYPE";
document.querySelector(".custom__select-wrapper .year-sel h6").textContent = "YEAR";
document.querySelector(".custom__option.selected[data-type]").classList.remove("selected");
document.querySelector(".custom__option.selected[data-year]").classList.remove("selected");
document.querySelector(".custom__option[data-type='all']").classList.add("selected");
document.querySelector(".custom__option[data-year='all']").classList.add("selected");
selectedFilter.classList.add("hidden");
let articles = [...document.querySelectorAll(".article")];
current_story = "all";
current_year = "all";
articles.forEach(function (article) {
article.classList.add("hidden");
article.classList.add("chosen");
});
loadInitial();
checkLoadMore();
checkEmpties();
}
解决方案
您可以更改“重置按钮”事件侦听器。您可以根据当前选择强制切换它,而不是添加hidden
类并删除selected-clearFilter
(不确定这是做什么的......) 。检查两者是否都是."all"
//reset button
let filterSelection = document.querySelectorAll(".dropdown").forEach(dropdown => {
dropdown.addEventListener("click", function () {
let allSelected = current_story === 'all' && current_year === 'all';
selectedFilter.classList.toggle("hidden", allSelected);
selectedFilter.classList.toggle('selected-clearFilter', !allSelected)
})
});
此外,您应该使用 初始化您的变量"all"
,否则这仅在您至少更改两个值一次后才有效。
let current_story = "all",
current_year = "all";
推荐阅读
- javascript - 用户在 NetSuite 中单击 SO 的“关闭订单”按钮后如何弹出确认对话框?
- deep-learning - 如何使用空间转换器在pytorch中裁剪图像?
- java - SplitPane 获取选定的窗格
- svg - 无法正确设置 webpack svg-inline-loader。svg 图像不显示
- java - 使用 Tomcat 在外部域中部署 WAR 文件
- google-apps-script - 使用谷歌应用脚本生成pdf文件并将其下载到本地PC
- php - 为什么“已添加到购物车”消息仍然出现?
- testing - 有没有办法在任何级别上找到与特定课程相关的所有测试?
- python-2.7 - 数据框中特定列的乘法而不改变 Pattren
- python - 如何替换混淆矩阵的行和列?