クラスごとに要素をフィルタリング (表示/非表示) したい。5 つのフィルターを連携させたいと考えています。
<select id='filter4'>...</select>
<select id='filter5'>...</select>
<select id='filter6'>...</select>
<select id='filter7'>...</select>
と
<select id='filter6' multiple>...</select>
jquery:
jQuery(document).ready(function ($) {
$("select").on("change", function () {
var filterVal = $("select#filter4").val();
var filterVal2 = $("select#filter5").val();
var filterVal3 = $("select#filter6").val();
var filterVal4 = $("select#filter7").val();
var filterVal5 = $("select#filter8").val();
var filterSelector = "";
var filter2Selector = "";
var filter3Selector = "";
var filter4Selector = "";
var filter5Selector = "";
if (filterVal == "all" && filterVal2 == "all" && filterVal3 == "all" && filterVal4 == "all" && filterVal5 === null) {
//show all items
$(".item").fadeIn("fast");
} else {
if (filterVal != "all") {
filterSelector = "." + filterVal;
}
if (filterVal2 != "all") {
filter2Selector = "." + filterVal2;
}
if (filterVal3 != "all") {
filter3Selector = "." + filterVal3;
}
if (filterVal4 != "all") {
filter4Selector = "." + filterVal4;
}
if (filterVal5 !== null) {
filter5Selector = "." + filterVal5;
}
$(".item").hide();
$(filterSelector + filter2Selector + filter3Selector + filter4Selector + filter5Selector).fadeIn("fast");
}
});
});
この jsfiddle のすべてを参照してください。
最初の 4 つの単一フィルターは、どのような問題でも機能します。複数のオプションが選択されている場合、5 番目の複数選択要素が正しく機能 (フィルター) しません。
編集: グローバル マッチである g 修飾子 (/ /g) を使用して、コンマをドット (複数の css セレクター) に置き換える必要がありました。
$(filter4Selector + filter5Selector.replace(/,/g, ".")).fadeIn("fast");
http://jsfiddle.net/mahish/dum7n/を参照してください。
以下の回答は、同様に機能する別のコードを提供します!