一、一个简单的自定义tree插件
上一篇是之前自定义的table插件,这一篇也是之前同期尝试做的一个tree插件。
话不多说,先看看长什么样子哈!
现在来看确实不好看,以后在优化吧!
数据源:ajax请求的挡板数据
[{ "id":"1","name":"安徽","url":"www.baidu.com","pid":"0"},{ "id":"2","name":"江苏","url":"","pid":"0"},{ "id":"3","name":"合肥","url":"","pid":"1"},{ "id":"4","name":"庐阳区","url":"","pid":"3"},{ "id":"5","name":"大杨镇","url":"","pid":"4"},{ "id":"6","name":"南京","url":"","pid":"2"},{ "id":"7","name":"玄武区","url":"","pid":"6"},{ "id":"8","name":"梅园新村街道","url":"","pid":"7"},{ "id":"9","name":"上海","url":"","pid":"0"},{ "id":"10","name":"黄浦区","url":"","pid":"9"},{ "id":"11","name":"外滩","url":"","pid":"10"},{ "id":"12","name":"安庆","url":"","pid":"1"},{ "id":"13","name":"阜阳","url":"","pid":"1"},{ "id":"14","name":"湖南","url":"","pid":"0"}]
js插件源码:还不完善,以后优化
1 /** 2 * JS自执行函数 3 * @param {Object} $ 4 * @param {Object} undefined 5 */ 6 ;(function($,undefined){ 7 8 /** 9 * 设置tree默认属性 10 */ 11 var MyTree=function(ele,opt){ 12 _defaults={ 13 id:'', 14 data:null, 15 url:null, 16 params:null 17 } 18 //装配设置 19 this.Property=$.extend({},_defaults,opt); 20 } 21 /** 22 * 公共资源 23 */ 24 var imgPublicDefault=''; 25 var spacePulicDefault='
-'; 26 var spacePulicDefault2=''; 27 28 /** 29 * 设置tree原型 30 */ 31 MyTree.prototype={ 32 //初始化tree 33 init:function(){ 34 //初始化数据 35 var datas=this.initData(this); 36 //统一注册事件 37 this.bindEvent(this,datas); 38 }, 39 //初始化数据 40 initData:function($this){ 41 var _data=$this.Property.data; 42 //如果有数据,则直接使用,没有则根据url去获取数据 使用优先级: data > url 43 if(_data!=null){ 44 $this.createTree(_data); 45 }else{ 46 $.ajax({ 47 url:$this.Property.url, 48 data:$this.Property.params, 49 type:'get', 50 async:false, 51 dataType:'json', 52 success:function(responseData){ 53 _data=responseData; 54 $this.createTree($this,responseData); 55 } 56 }); 57 } 58 return _data; 59 }, 60 //开始生成tree 61 createTree:function($this,datas){ 62 var $ul=$('#'+$this.Property.id); 63 var $lis=''; 64 $('![]()
![](./img/trees/tree-ul3.jpg)
- '; 96 $.each(childNodes, function(index,node) { 97 if(node.childs.length==0){ 98 $lis+='
- '+spacePulicDefault+''+node.name+' '; 99 }else{100 $lis+='
'+node.name;101 $lis+=$tree.forFnByChilds($tree,node,node.childs);102 } 103 }); 104 return $lis+='
看看如何使用:
1