jqueryを使用してレビューに基づいて商品をフィルタリングするフィルタを作成しました。選択ボックスの値が変更されると、選択されたボックスの選択値から選択された星を取得するjqueryイベントが呼び出されます。すべてのdiv(表示+不可視)にフィルタ関数を適用
そしてここif/else
声明、
if(stars == 'all'){
$('#results > div.stars').fadeIn(450);
} else{
$('#results > div.stars').filter(function(){
return $(this).attr('stars') != stars
}).fadeOut(450);
}
は、今ではかなりうまく動作しますが、小さな問題があるのです。私は2番目の時間をフィルタすると、それが(ちょうどdivs
display:block
とプロパティが含まれています)、すべての製品が含まれていません
例:私は5つ星に戻って変更した場合、5つ星による まずIフィルターはその後、今4によって再びフィルタリングし、それは、私はそれらをすべて(if
条件を実行し、すべてのdivs
display:block
に設定)フィルタ
試みるまでは動作しません:それらをフィルタリングする前に は私がfadeIn
すべてdivs
しようとしたが、それはひどい見えます。私はまた、親div
を隠して、フィルターを適用して親div
を表示しようとしましたが、それも良く見えません。
質問:このシナリオを処理する適切な方法は何ですか?
例スニペット:
jQuery(document).on('change', '#byStars', function() {
var stars = jQuery(this).val();
if(stars == 'all'){
jQuery('div[stars]').fadeIn(450);
} else {
jQuery('div[stars]').filter(function(){
return jQuery(this).attr('stars') != stars
}).fadeOut(450);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='byStars' class='col-md-2 pull-right'>
<option value='all'>All</option>
<option value='5'>5 Star</option>
<option value='4'>4 Star</option>
<option value='3'>3 Star</option>
<option value='2'>2 Star</option>
<option value='1'>1 Star</option>
<option value='0'>0 Star</option>
</select>
<div stars="5">5</div><br/>
<div stars="4">4</div><br/>
<div stars="3">3</div><br/>
<div stars="2">2</div><br/>
<div stars="1">1</div><br/>
私たちのコードをお見せ...例と試行のそれぞれについて問題 – charlietfl
を再現している[MCVE] ** **実行可能なを作成するための十分な基本的なコードやHTMLを入力してください何が起こったのかを完全に説明してください... "うまくいかない"/"良く見えない"とはあなたが見たもの、あるいはあなたが代わりに見たいと思ったものを伝えるのに十分ではありません。 –
更新された質問 – Alena