通过多个数组验证复选框?

时间:2012-01-06 23:29:16

标签: javascript jquery arrays checkbox

我正在尝试构建的网站上遇到一些问题。在网站的一侧有一个“过滤器”,允许用户选中列表中的框,这将影响他们的搜索结果。我是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的类,反之亦然。

对不起,这是一个很长的问题,我试图具体。

提前感谢您的答案! =]

1 个答案:

答案 0 :(得分:0)

这样的事情?

$(document).ready(function(){ 
 $('ul.filterlist input:checkbox').click(function () {
  var ul = $(this).parent().parent();
  if ( ul.find("input:checked").length == 0 ) {
   ul.parent().removeClass('itemselected');
  } else {
   ul.parent().addClass('itemselected');
  }
 });
});