javascript通过json数据按格式生成一个按字母分类排序的分类信息表
效果图如下
1.json数据格式
var _people=[{name:'朱瑞',url:'aaaaaa',nick:'zhu'},{name:'刘桂清',url:'aaaaa',nick:'liu'}];这里按姓氏排序借用了nick,不用nick的话,需要加载一个汉字拼音对照数组,判断匹配 2.javascript代码
1 (function ($){ 2 function SortByGroup(arr,option){ 3 this.option=option; 4 this.arr=arr||[]; 5 } 6 SortByGroup.prototype={ 7 init:function(){ 8 this.sort(); 9 return this.sortByGroup(this.group()); 10 }, 11 sort:function(){ 12 var tag=this.option.tag; 13 this.arr=this.arr.sort( function compareFunction(param1,param2){ 14 return param1[tag].localeCompare(param2[tag]); 15 }); 16 }, 17 group:function(){ 18 var arr=[],count=0,def; 19 var charTemp="-1",temp; 20 for(var i in this.arr){ 21 temp=this.arr[i]; 22 if(charTemp!==temp[this.option.tag].charAt(0)){ 23 var one=[]; 24 one.push(temp); 25 arr[count]=one; 26 charTemp=temp[this.option.tag].charAt(0); 27 count++; 28 }else{ 29 arr[count-1].push(temp); 30 } 31 } 32 return arr; 33 }, 34 sortByGroup:function(arr){ 35 var temp; 36 for(var i =0;i<arr.length;i++){ 37 temp=arr[i]; 38 temp.sort(function compareFunction(param1,param2){ 39 return param1['name'].localeCompare(param2['name']); 40 }); 41 }; 42 return arr; 43 } 44 }; 45 function RenderPage(arr){ 46 this.model=arr; 47 this.index=[]; 48 this.lastIndex="-1"; 49 } 50 RenderPage.prototype={ 51 init:function(){ 52 53 $("#container").html(this.render()); 54 $("#index").html(this.renderIndex()); 55 this.bindEvent(); 56 }, 57 getIndex:function(nick){ 58 this.index.push(nick.charAt(0).toUpperCase()); 59 60 }, 61 bindEvent:function(){ 62 $("#index a").mouseover(function(){ 63 64 var tag=$(this).attr("data"); 65 if(tag!="more"){ 66 $("#container .block").css("display","none"); 67 $("#container ."+tag).css("display","block"); 68 }else{ 69 $("#container .block").css("display","block"); 70 } 71 72 }); 73 74 75 }, 76 render:function(){ 77 var str=""; 78 for(var i=0;i<this.model.length;i++){ 79 str+=this.renderGroup(this.model[i],i); 80 } 81 82 return str; 83 }, 84 renderGroup:function(arr,num){ 85 var str="",temp; 86 87 for(var i=0;i<arr.length;i++){ 88 if(i==0){ 89 this.getIndex(arr[i].nick); 90 temp=this.index[num]; 91 92 str='<div class="block '+temp+'"><h3>'+temp+'</h3><ul>' 93 } 94 str+=this.renderOne(arr[i]); 95 } 96 if(str) str+="<div class='clear'></div></ul></div>"; 97 return str; 98 }, 99 renderOne:function(one){ 100 return '<li><a href="'+one.url+'" target="_blank">'+one.name+'</a></li>'; 101 }, 102 renderIndex:function(){ 103 var str=""; 104 105 for(var i =0;i<this.index.length;i++){ 106 str=str+"<a data='"+this.index[i]+"'>"+this.index[i]+"</a>"; 107 } 108 str+="<a data='more'>MORE</a>"; 109 return str; 110 } 111 }; 112 new RenderPage(new SortByGroup(_people,{tag:'nick'}).init()).init(); 113 })(jQuery);
3.html页面结构
<!-- 区域32(按字母检索)Start -->
<div id="pd32" class="w1020"><div class="title4"><span>按字母搜索</span><p id="index" class="index"></p><div class="clear"></div></div><!--block--><div id="container" class="container"></div><!--block-->
</div>
<!-- 区域32(按字母检索)End -->
4.css样式
#pd32 .title4{border-bottom:1px solid #cecece;padding-bottom:10px;
}#pd32 .title4 p{float:right;
}#pd32 .title4 p a{background:none;padding:0px;float:none;color:#d26213;font-family:"Microsoft Yahei","����";font-size:22px;cursor:pointer;margin-left:12px;
}#pd32 .block{margin-top:15px;
}#pd32 .block h3{border-bottom:1px dotted #cfcfcf;font-size:30px;font-family:"Arial","Microsoft Yahei","����";color:#000;height:40px;line-height:40px;padding-bottom:5px;margin-bottom:8px;
}#pd32 .block ul{zoom:1;
}#pd32 .block li{float:left;display:inline;width:102px;height:30px;line-height:30px;overflow:hidden;font-size:16px;font-family:"Microsoft Yahei","����";
}#pd32 .block li a{color:#000;
}
注:另外需要引入jquery,这里的json数据是在开始就引入的。后面的js代码直接引用了people这个变量(比较low)。
转载于:https://www.cnblogs.com/licifer/p/4603056.html
javascript通过json数据按格式生成一个按字母分类排序的分类信息表相关推荐
- ajax使用json下拉框,ajax请求后台得到json数据后动态生成树形下拉框的方法
如下所示: $(function(){ $.ajax({ url:"departmentAction_getAllDep.action", type:"post" ...
- 使用 C++ 处理 JSON 数据交换格式
From: http://blog.csdn.net/xt_xiaotian/article/details/5648388 使用 C++ 处理 JSON 数据交换格式 一.摘要 JSON 的全称为: ...
- 修改软件服务器json返回数据格式,AngularJS处理服务器端返回的JSON数据的格式问题...
用ng的$http服务发起ajax请求,php返回的JSON数据格式要正确! 一开始我的php页面是这样返回数据的: if($result){ $oid = mysqli_insert_id($con ...
- Javascript 处理 JSON 数据 示例
最近做了一个 MEAN stack 的 app .后台用 NodeJS 从 Jira rest api 获得JSON数据并做处理,然后前端用 AngularJS Ajax call 获得处理后的 JS ...
- 【Java】JSON数据交换格式及其使用案例(聊天工具)
数据交换格式主要分为纯文本格式,XML格式和JSON格式.其中纯文本格式是一种简单的,无格式的数据交换方式:而XML格式和JSON格式可以带有描述信息,它们叫做"自描述的"结构化文 ...
- python获取json数据,快速生成excel
需要的python 安装包: pip install requests pip install pandas 一.通过requests 获取网页json数据 url = 'http://192.168 ...
- JavaScript 解析 JSON 数据
JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON ...
- XML和JSON 数据交换格式
为什么80%的码农都做不了架构师?>>> 一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...
- JavaWeb-----Ajax异步请求 json对象 服务器如何返回json数据 使用ajax完成一个案例
1. 回顾 1. servlet的生命周期: 2. filter: 过滤放行和拦截一些资源.比如:黑白名单,登录校验,编码设置等. (1)创建一个类并实现Filter接口以及重写接口的抽象方法 ...
最新文章
- FeiBoStr 斐波那契
- Android Studio你不知道的调试技巧
- 启动controller节点nova组件服务,报错ERROR 13
- 【Linux】一步一步学Linux——cd命令(20)
- 51 nod 1624 取余最长路 思路:前缀和 + STL(set)二分查找
- MVC下实现LayUI分页的Demo
- 牛客网暑期ACM多校训练营(第五场)
- (扩展欧几里德算法)zzuoj 10402: C.机器人
- 看图纸V3.2.1正式版[看图纸正式版下载]
- react获取鼠标位置_JavaScript 获取鼠标点击位置坐标
- 做独立app需要哪些东西?
- 四川眉山中院宣判两起特大跨国电信诈骗案
- Build error handing
- 微信成语接龙小程序|微擎框架|带流量主|前端+后端完整源码
- 云计算笔记---day3
- Kali从入门到出门-手记
- Markdown 新手指南
- 用JavaScript写一个类似于windows的气泡屏保效果
- echars 字符云效果,echars字符云颜色问题
- 国防科技大学计算机原理真题答案,1996年国防科技大学计算机原理和系统结构试题...