2016-10-13 6 views
0

私は自分のウェブサイトですばやく簡単なフィルタ機能を実行しようとしています。ユーザーがチェックボックスをオンまたはオフにして、見たいものをフィルタすることができる場所。すべてのチェックボックスがオフになっているすべてのdivを表示

現在、私はこのスクリプトを使用しています:

$(".filter-obj :checkbox").click(function() { 
    $(".obj").hide(); 
    $(".filter-obj:checkbox:checked").each(function() { 
    $("." + $(this).val()).show(); 
    }); 
}); 

これは私のHTMLです:

<ul class="filter-obj"> 
    <li> 
     <div class="checkbox"> 
      <input class="filter-search" id="filter-obja" value="a" type="checkbox"> 
      <label for="filter-obja"> Object A</label> 
     </div> 
    </li> 
    <li> 
     <div class="checkbox"> 
      <input class="filter-search" id="filter-objb" value="b" type="checkbox"> 
      <label for="filter-objb"> Object B</label> 
     </div> 
    </li> 
</ul> 


<!-- my objects --> 
<div class="obj a">Object A</div> 
<div class="obj a">Object A</div> 
<div class="obj b">Object B</div> 
<div class="obj b">Object B</div> 

それがチェックだけいただきまし示すといただきました未確認隠しで完璧に動作します。しかし、すべてがチェックされていないときに、すべての部門を再び表示したいと思っています。助けて? returnを使用してあなたがチェックボックスの長さを取得し、それが0(偽)を返した場合、その後(表示することができます

+0

あなたのHTML部分を投稿しますか? –

+0

@ KarthikeyanSekar私は自分のhtmlで更新しました – flolaloop

答えて

0

var check = $(".filter-obj :checkbox:checked").length; 

if(!check) return $(".obj").show(); 

編集が実行されているから、コードの残りの部分を停止します。

$(".filter-obj :checkbox").click(function() { 
    var check = $(".filter-obj :checkbox:checked").length; 
    if(!check) return $(".obj").show(); 

    $(".obj").hide(); 
    $(".filter-obj:checkbox:checked").each(function() { 
     $("." + $(this).val()).show(); 
    }); 

}); 
+0

これはこれで私にはうまくいきませんが、これを回避しようとしているロジックです... show/hide機能の衝突が原因でしょうか? – flolaloop

+0

@flolaloop編集を確認します。 – Darkrum

+0

それはまだ動作していません...ここでは、私はurコードを入れたフィドルです。 https://jsfiddle.net/dLfse25a/2/ – flolaloop

関連する問題