我有一个带有复选框的内容过滤器,可以在选项中获取.text。
问题是取消选中后不会重置,并显示所有应该过滤的内容。
$("#filters :checkbox").click(function() {
var re = new RegExp($("#filters :checkbox:checked").map(function() {
return this.value;
}).get().join("|") );
$("div").each(function() {
var $this = $(this);
$this[re.source!="" && re.test($this.text().toLowerCase()) ? "show" : "hide"]();
});
});
它应该清理结果。
整个代码在 JsFiddle https://jsfiddle.net/4fhkzxdp/2/ 中
最佳答案
当$("#filters :checkbox:checked")
为空时(当所有复选框都未选中时),用于创建新正则表达式的字符串为空。如果您使用该表达式,它将匹配您的所有元素并显示它们。
var myRegexp = new RegExp('') // /(?:)/
快速破解是将复选框存储在变量中,并在each循环中检查该数组是否为空 - 如果是,则没有任何元素可见。操作方法如下:https://jsfiddle.net/3t2hydmn/
关于JavaScript 复选框标签过滤器 : Issue to hide results when unchecked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55718234/