【发布时间】:2012-12-25 10:33:26
【问题描述】:
我有一个列表,其中包含我想通过开关(选择、单选、复选框)过滤并按字段(名称、日期、...)排序的项目。
下面的代码可以用于基本过滤,但这不是一个好方法。我想知道如何以专业的方式做到这一点。有什么好的 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 找到了this code,但不是那么广泛。
提前致谢!
【问题讨论】:
-
有很多过滤插件...你试过搜索吗?
-
@charlietfl 是的,我做过,但有些过于广泛,有些则不然。我有点不知所措。
-
据我所知,所有可用的插件都只是以一种或另一种方式循环...如果我可以控制 json 并从数据库创建 json,我会寻找将提供数组的 db 查询javascript需要;否则,一个循环遍历数据以在接收时创建所有必需的数组(因此不必再次循环相同的数据)
标签: jquery json sorting filtering