0

チェックボックスの2つのグループでフィルタリングしたいdivのリストがあります:TypeCategory

2つのカテゴリをチェックすると、少なくとも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 に答える