通过JSON(javascript)构建嵌套过滤器
Building nested filters via JSON (javascript)
我有很多过滤选项,它们使用Jquery在一个简单的页面上更新DOM,该页面显示JSON对象生成的渲染"东西"列表。每一个过滤器都能很好地独立工作(见fiddle),然而,我希望它们之间的连接更紧密。I.E.假设我按性别筛选,然后我想搜索一个名字。或者,如果我按最小年龄筛选,则按活动状态筛选。我的过滤功能看起来像这个
function sortByAge(value) {
document.getElementById("range").innerHTML= value;
var data = getData();
var length = data.result.length;
var htmlSlug = "";
for (var i=0; i< length; i++) {
if (data.result[i].age >= value){
htmlSlug += writeHTML(data,i);
}
}
if (!htmlSlug) htmlSlug = "Nothing Found";
$('.data-container').html(htmlSlug);
}
function writeHTML(data, i) {
//this gets called any time we need to build html to the DOM
var active = "";
if (data.result[i].isActive == true) {
var active = "active";
}
var slug = '<div class="member-card-container '+active+'">'+
'<div class="info">'+
'<span class="name">'+data.result[i].name+'</span> '+
'<span class="gender">'+data.result[i].gender+ '</span> '+
'<span class="age">'+data.result[i].age+'</span>'+
'<span class="latitude">'+data.result[i].latitude+'</span>'+
'<span class="longitude">'+data.result[i].longitude+'</span>'+
'</div>'+
'<div class="address">'+data.result[i].address+'</div>'+
'</div>';
return slug;
}
再次,请参阅fiddle
修改您的过滤函数以接受JSON数据作为参数并返回过滤后的列表。不要在筛选函数中编写HTML。
创建一个writeHTML函数,该函数接受JSON作为参数,在列表上循环,并将所有元素写入页面。
如果这样做,您将能够按顺序调用过滤函数,将上一个函数的返回值(JSON列表)传递到下一个过滤器。
最后,调用writeHTML函数将结果写入页面。
类似这样的东西:
function byAgeAsc(r1,r2) { return r2.age - r1.age; }
function byAgeDesc(r1,r2) { return r1.age - r2.age; }
var data = data.result.sort(byAgeAsc).filter(function(r) { return r.age > value } );
data
集合将被排序和过滤,并准备进行渲染。例如,通过splash.js或mykite.js模板引擎。
相关文章:
- 用angular指令构建嵌套树
- 如何迭代对象/数组中的项,并构建嵌套的JSON
- 在JavaScript中,从一组数组递归地构建一个字典/嵌套对象
- 使用 Javascript/jQuery 在循环中构建嵌套对象
- 从 Javascript 中的复杂嵌套对象值构建字符串
- 有关为嵌套集合构建模板的建议
- 如何使用嵌套的 JSON 对象构建 JSON 对象
- 如何构建基于 Backbone.View 的插件,以便可以单独扩展其嵌套视图
- 在EmberJS中构建一个自动刷新的嵌套列表
- 根据路径字符串构建嵌套文件夹结构
- 构建一个JS函数来动态创建HTML元素并将它们嵌套在彼此内部
- 通过JSON(javascript)构建嵌套过滤器
- 如何在继续之前构建这些嵌套的异步请求以完成批处理
- 递归构建器嵌套问题
- 从嵌套的对象数组优化数组构建
- 如何构建嵌套的backbone.js模型,这些模型可以被不同的底层同步方法重用
- 如何构建嵌套JSON对象
- 如何从jquery构建嵌套列表:header选择器
- 嵌套的DIV表(即表中的表),如何用所有的数据构建一个对象
- backbone.js构建嵌套视图和模型