0

我有一个 div 列表,我想使用 2 组复选框进行过滤:TypeCategory.

当检查2个类别时,应显示DIV至少包含1个类别的DIV。

检查类型时,它应该只显示该类型的 DIV。即使它包含选中的类别。

<input type="checkbox" name="type[]" value="Type 1">
<input type="checkbox" name="type[]" value="Type 2">
<input type="checkbox" name="type[]" value="Type 3">

<input type="checkbox" name="category[]" value="1">
<input type="checkbox" name="category[]" value="2">
<input type="checkbox" name="category[]" value="3">
<input type="checkbox" name="category[]" value="4">

DIV的:

<div data-type="Type 1" data-cat="1 4">
<div data-type="Type 2" data-cat="1 2 3">

我到目前为止的代码(仅过滤器类型):

$('form input:checkbox').change(function(){
  var type = [];
  var checked = $(':checkbox:checked').length;

  // Hide all
  $('#videoHolder').children('div').hide();

  $(':checkbox:checked').each(function(i){
    type[i] = $(this).val();
    $('#videoHolder').children('div[data-type="' + type[i] + '"]').fadeIn();
  });

  // Show all
  if(checked==0){
      $('#videoHolder').children('div').fadeIn();
  } 
});
4

1 回答 1

0

您需要手动检查每个类别属性。或者你可以考虑使用 jQuery 的regEx插件。

// select only category check box-es!!
$(':checkbox:checked').each(function(i, checkBox){

    var search = $(checkBox).val();

    $('#videoHolder').children('div').each(function(index, divTag) {
      var category = $(divTag).attr("data-cat");
      var dataType = $(divTag).attr("data-type");

     if (isOfType(search, dataType) || containsCategory(search, category))
         $(divTag).fadeIn();
     });
  });
于 2012-11-15T09:12:31.347 回答