私はこれに似たものに取り組んでいます。
追加したいのは、「1ベッドルーム」を選択すると、場所のチェックボックスが選択されていなくても、1ベッドルームのアイテムが表示されるはずです。
ありがとう。
必要なのは、配列が空かどうかをチェックする「または」を下部のステートメントに追加することだけです。
現在のコード構造を維持すると、コードの最後のビットは次のようになります。
$('li').each(function() {
if (($.inArray($(this).data('location'), loc_array) > -1 || loc_array.length == 0) && ($.inArray($(this).data('bedrooms'), room_array) > -1 || room_array.length == 0)) {
$(this).show();
} else {
$(this).hide();
}
});
もちろん、コードをリファクタリングして、読みやすく、(おそらく)より効率的にすることもできます。しかし、これの目的は、あなたが何をする必要があるかを理解するのを助けることです。リファクタリングは後で行われます!
入力変更関数でこれを試してください。
var bedrooms = $(this).data('bedrooms');
$('ul > li').each(function(){
if($(this).data('bedrooms') !== bedrooms) $(this).toggle();
});