2017-07-03 17 views
0

リンクフィルタリング時:質問
code:http://jsfiddle.net/ar3PY/92/無効にチェックボックスフィルタに

を:
私はフィルタリングすることができ、私は 「空」の結果を取得しますが、そのチェックボックスを無効にする方法とにかくフィルタリングすると空に見えます。

!!各カテゴリはそれ自身でフィルタリングしないことに注意してください。他のカテゴリでのみフィルタリングします。たとえばについては


私は "VOLVO" と "SILVER" をチェックすると、私は "空" を得ます。

私が探しているもの:
「VOLVO」をチェックすると、「SILVER」が無効になります。それは
に動作する方法を示して

画像:
enter image description here

答えて

1

基本的にあなたは自分のクラスはそれを動作させるために属性にアクセスする必要がありました。以下の作業フィドルで見つかった

$("#filters :checkbox").click(function() { 
     var subj = this; 
     resetBoxes(); 
     $(".filterme").show(); 

    if(this.checked){ 
     var all = $(".filterme"); 
     var tgts = all.filter(getFilter("brand")).filter(getFilter("class")).filter(getFilter("color")); 
     var brandtgt = tgts[0].className.split(' ')[1]; 
     $("#filters :checkbox").each(function(idx){ 
     var inval = $(this).attr("value"); 
     var brandclasses = tgts[0].className.split(' '); 
     var found = $.inArray(inval, brandclasses); 

     if(found<0){ 
      disable($(this)); 
     } 

     }); 
    all.not(tgts).hide(); 
    tgts.show(); 
    if (tgts.length == 0) { 
     $('.empty').show(); 
    } else { 
     $('.empty').hide(); 
    } 
} 
}); 

私が含まれてきたヘルパー関数(resetBoxes, enable, disable):私はあなたのフィドルをフォークし、ここで修正されたバージョンです。唯一のカテゴリごとにexacly同じ属性を持ってチェックし、フィルタの内容を表示する方法

http://jsfiddle.net/ppzwmvs9/6/

+0

はよさそうだが、それでも左の二つのこと:なし]チェックボックスがチェックされている場合 1.私は車のブランドまたはcarstyleまたは色の全カテゴリを確認することができるだろう。画像のように私はAudi、Bmw、Volvoをクリックしてから、色とカースタイルでフィルタリングすることができます。 2.いくつかのチェックボックスをチェックし、すべてチェックを外すと、いくつかのチェックボックスが無効になっています。 困ったときはThx! – Doodl

+0

助けてくれて嬉しいです。そうですね、それはあなたのコードを頼りにしているclassNameにアクセスする際に、特にクラス名を調べるためのポインタを持つ大まかなコードです。残りのチェックボックスを無効または非表示にして、最初のステップをブランド選択にします。 – Qiqo

+0

残ったバグを修正できますか?チェックボックスをチェックしてチェックを外すとチェックボックスが無効になり、そのバグが発生します。 :/ – Doodl

0

How to show content of checked filter that only has exacly same attribute for each category? see also image:

は説明のためにも、画像を参照してください。 HERE

JSFIDDLE: http://jsfiddle.net/ar3PY/104

var getFilter = function (category) { 
    var filter = $("#filters ." + category + ":checked").map(function() { 
     return '[data-filter*="' + this.value + '"]'; 
    }).get().join(","); 
    filter = (filter.length > 0) ? filter : "*"; 
    return filter; 
}