2 つの配列を比較して、ある配列の要素が別の配列にあるかどうかを確認しようとしています。
しかし、私はそれを機能させることができないようです
//if a categories checkbox is clicked
$j('#cat-dropdown li label input').click(function(e) {
//Get all selected categories
var categories = new Array;
$j('#cat-dropdown li label input').each(function(index, element) {
if($j(this).is(':checked')){
categories.push($j(this).val());
}
}); // Categories variable now has all selected cats
$j('.products-grid li.item').each(function(index, element) {
//get all the cateroies of a product
console.log('//////////////////////'+$j(this).val())
product_cats = $j(this).attr('data-product-categories').split(",");
//Now check if the product categories is in the selected categories
var inCategoryList = false;
for (i=0;i<categories.length;i++){
if($j.inArray(categories[i],product_cats)){
console.log('test '+categories[i])
inCategoryList = true;
}
}
if(inCategoryList == false){
$j(this).hide();
}
});//end each on product-grid li.item
});//end click function
しかし、それは機能していません。何も隠されていません..しかし、inArrayメソッドも正しく機能していないようです.2つの配列を比較して、ある要素が別の要素にあるかどうかを確認する別の方法はありますか.
基本的な流れは、ユーザーがチェックボックスを選択すると、li アイテムにカテゴリのリストが添付されます。チェックボックスがカテゴリに一致する場合はアイテムを表示したままにし、一致するものがない場合は非表示にします