【发布时间】:2012-01-06 23:29:15
【问题描述】:
我在尝试构建的网站上遇到了一些问题。在网站的一侧有一个“过滤器”,允许用户选中列表中的复选框,这将影响他们的搜索结果。我是 jQuery 的新手,但我已经设法拼凑出足够多的代码来完成这项工作...... 大部分
这是我目前的代码:
/// Makes checkboxes in the filter add and remove the proper class based on whether they're checked or not
$('.filterlist input:checkbox').click(function checkboxes(){
$thislist = $(this).closest('.filterlist li > ul');
$checkboxes = $thislist.closest('li > input:checkbox').serializeArray();
if($checkboxes.length < 1) {
$(this).closest('ul.filterlist > li').removeClass('itemselected');
}
else if($checkboxes.length > 0) {
$(this).closest('ul.filterlist > li').addClass('itemselected');
}
});
在我的 css 中,“itemselected”是我要添加的类。问题是我在“.filterlist”下有多个复选框列表。当我检查第一个列表中的复选框时,它会正确添加类,如果我删除该列表中的所有复选框,它会正确删除该类 - 除非在第二个列表中选中任何复选框。
这是因为我只使用一个数组,但我不知道如何让它为每个列表创建一个不同的数组,这样即使在第一个列表中检查了一些,它仍然会删除如果没有检查第二个列表中的 li 类,反之亦然。
抱歉,这个问题太长了,我想具体一点。
提前感谢您的任何回答! =]
【问题讨论】:
-
我认为如果你以jsFiddle 为例,这可能更有意义。
-
一个 jsFiddle 会说一千多个单词。
-
我不知道如何使用 jsFiddle,但我在jsbin.com/ijuqow/edit#preview 做了一个示例如您所见,代码有效 - 但如果您选择顶部复选框列表中的复选框,然后底部复选框列表中的一个,然后取消选中其中一个,该函数无法删除该类,因为它们都添加到同一个数组中,因此它仍然读取数组的值大于 1。
标签: javascript jquery arrays checkbox