スイッチのオン/オフ(選択、ラジオ、チェックボックス)でフィルタリングし、フィールド(名前、日付など)で並べ替えたいアイテムのリストがあります。
以下のコードは、基本的なフィルタリングには問題ありませんが、良い方法ではありません。専門的な方法でそれを行う方法を知りたいです。優れた jQuery プラグインはありますか? ウィジェットは必要ありません。背後にあるフィルタリング/並べ替えエンジンだけです。
# this code is pseudocode and not running! #
<script>
// ready
$(function() {
// get items
var items = jQuery.parseJSON("items_json.php");
// items filtered
var items_filtered = new Array();
// conditions/relations for filtering
var filter1_relations = jQuery.parseJSON("filter1_relations.php");
var filter2_relations = jQuery.parseJSON("filter2_relations.php");
// build unfiltered list
build_list(items);
// build filtered list
$(".filter").on("change", function() {
items_filtered = run_filter1(items, filter1_relations);
items_filtered = run_filter2(items_filtered, filter2_relations);
build_list(items_filtered);
});
});
// filters the 'items' by checking if a 'relation' exists
function run_filter1(items, relations) {
items_filterd = new Array();
$.each(items, function(key, item) {
for (var i = 0; i < relations.length; i++) {
if (...) {
items_filtered.push(item);
}
}
});
return items_filtered;
}
// build list and add to #content
function build_list(items) {
html = '<ul>';
for (var i = 0; i < items.length; i++) {
html += '<li>'+ items[i].name +'</li>';
}
html += '</ul>';
$("#content").html(html);
}
</script>
Filter 1.1: <input type="checkbox" name="filter1_condition1" value="1" class="filter"/><br/>
Filter 1.2: <input type="checkbox" name="filter1_condition1" value="1" class="filter"/><br/>
Filter 2.1: <input type="checkbox" name="filter1_condition1" value="1" class="filter"/><br/>
Filter 2.1: <input type="checkbox" name="filter1_condition1" value="1" class="filter"/><br/>
<div id="content"></div>
stackoverflow を検索してこのコードを見つけましたが、それほど広範囲ではありません。
前もって感謝します!