AngularJS+JQuery 做的一个复选框树形结构
来源:互联网 发布:淘宝进货网怎么样 编辑:程序博客网 时间:2024/05/24 03:25
<html ng-app="com.ngbook.demo" class="ng-scope"><head> <meta name="description" content="ng trrview example"> <link href="//cdn.bootcss.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <script src="jquery.min.js"></script> <link href="bootstrap.min.css" rel="stylesheet" type="text/css" /> <meta charset="utf-8"> <title>JS Bin</title> <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> <style id="jsbin-css"> ul{ list-style: none; } .text-field{ cursor: pointer; } .check-box{ width: 24px; height: 18px; border-radius: 8px; } </style></head><body><div ng-controller="DemoController as demo" class="container"> <div class="row"> <h2>Tree view</h2> <tree-view tree-data="demo.tree" text-field="name" value-field='id' item-clicked="demo.itemClicked($item)" item-checked-changed="demo.itemCheckedChanged($item)" can-checked="true" ></tree-view> </div><!-- <div class="row"> <h2>Item selected</h2> <pre>{{demo.selectedItem | json}}</pre> </div>--> <script type="text/ng-template" id="/treeView.html"> <ul class="tree-view"> <li ng-repeat="item in treeData" ng-include="itemTemplateUrl || '/treeItem.html'" ></li> </ul> </script> <script type="text/ng-template" id="/treeItem.html"> <i ng-click="itemExpended(item, $event);" class="{{getItemIcon(item)}}"></i> <input id="{{item.id}},{{item.pid}}" type="checkbox" ng-model="item.$$isChecked" class="check-box" ng-if="canChecked"> <span class='text-field' ng-click="warpCallback('itemClicked', item, $event);" >{{item[textField]}}</span> <ul ng-if="!isLeaf(item)" ng-show="item.$$isExpend"> <li ng-repeat="item in item.children" ng-include="itemTemplateUrl || '/treeItem.html'"> </li> </ul> </script></div><script>try {angular.module("com.ngbook.demo", []) .controller("DemoController", ['$http',function($http){ var vm = this; vm.tree = [ { "id":"1", "pid":"0", "name":"家用电器", "children":[ { "id":"4", "pid":"1", "name":"大家电", "children":[ { "id":"7", "pid":"4", "name":"空调", "children":[ { "id":"15", "pid":"7", "name":"海尔空调" }, { "id":"16", "pid":"7", "name":"美的空调" } ] }, { "id":"8", "pid":"4", "name":"冰箱" }, { "id":"9", "pid":"4", "name":"洗衣机" }, { "id":"10", "pid":"4", "name":"热水器" } ] }, { "id":"5", "pid":"1", "name":"生活电器", "children":[ { "id":"19", "pid":"5", "name":"加湿器" }, { "id":"20", "pid":"5", "name":"电熨斗" } ] } ] }, { "id":"2", "pid":"0", "name":"服饰", "children":[ { "id":"13", "pid":"2", "name":"男装" }, { "id":"14", "pid":"2", "name":"女装" } ] }, { "id":"3", "pid":"0", "name":"化妆", "children":[ { "id":"11", "pid":"3", "name":"面部护理" }, { "id":"12", "pid":"3", "name":"口腔护理" } ] } ]; }]) .directive('treeView',[function(){ return { restrict: 'E', templateUrl: '/treeView.html', scope: { treeData: '=', canChecked: '=', textField: '@', itemClicked: '&', itemCheckedChanged: '&', itemTemplateUrl: '@' }, controller:['$scope', function($scope){ $scope.itemExpended = function(item, $event){ item.$$isExpend = ! item.$$isExpend; $event.stopPropagation(); }; $scope.getItemIcon = function(item){ var isLeaf = $scope.isLeaf(item); if(isLeaf){ return 'fa fa-leaf'; } return item.$$isExpend ? 'fa fa-minus': 'fa fa-plus'; }; $scope.isLeaf = function(item){ return !item.children || !item.children.length; }; $scope.chk = function(callback , item){ var itemId = item.id; }; $scope.warpCallback = function(callback, item, $event){ ($scope[callback] || angular.noop)({ $item:item, $event:$event }); }; }] }; }]);} catch (error) { throw error; }//# sourceURL=vefuqu.js</script><script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script><script type="text/javascript"> // Apparently click is better chan change? Cuz IE? $(function(){ // Apparently click is better chan change? Cuz IE? $('input[type="checkbox"]').change(function() { var checked = $(this).prop("checked"), container = $(this).parent(), siblings = container.siblings(); container.find('input[type="checkbox"]').prop({ indeterminate: false, checked: checked }); function checkSiblings(el) { var parent = el.parent().parent(), all = true; el.siblings().each(function() { return all = ($(this).children('input[type="checkbox"]').prop("checked") === checked); }); if (all && checked) { parent.children('input[type="checkbox"]').prop({ indeterminate: false, checked: checked }); checkSiblings(parent); } else if (all && !checked) { parent.children('input[type="checkbox"]').prop("checked", checked); parent.children('input[type="checkbox"]').prop("indeterminate", (parent.find('input[type="checkbox"]:checked').length > 0)); checkSiblings(parent); } else { el.parents("li").children('input[type="checkbox"]').prop({ indeterminate: true, checked: false }); } } checkSiblings(container); }); });</script></body></html>
首先是利用angularJS 的递归 然后加上Jquery实现复选框的全选 可以摘下来试试
然后 感谢网络上那些 前辈 大牛们的分享 谢谢
然后 感谢网络上那些 前辈 大牛们的分享 谢谢
0 0
- AngularJS+JQuery 做的一个复选框树形结构
- 带单选框、复选框的树形结构dtree
- 带单选框、复选框的树形结构dtree
- 无法直接定位的树形结构复选框处理
- JQuery 实现简单的复选框树形结构图
- jQuery复选框树形控件wdTree
- 使用jquery做复选框的全选,全不选
- 树形控件复选框的级联选择
- 带复选框的树形控件实例
- c# 带复选框的树形菜单
- QT--复选框树形控件的使用
- AngularJS自定义复选框对应的值
- angularJs复选框的选择状态筛选
- Angularjs--自定义树形结构视图
- Jquery的treeview插件实现树形结构
- jquery 判断复选框必须选中一个
- jQuery复选框的实现
- jquery复选框的操作
- PL/SQL 链接远程ORACL服务器
- 算法之----插入排序
- 1.公共初始化样式
- Socket 阻塞与非阻塞模式
- 疑ISIS黑客入侵美国人权委员会网站,并留言放话
- AngularJS+JQuery 做的一个复选框树形结构
- C# DataTable的用法
- awesome:linux下的平铺式桌面
- 数据库事务管理与隔离级别
- Android学习之 在surface上显示YUV 笔记
- 阿里巴巴常考面试题及汇总答案
- oracle之flashback
- SQL盲注的框架——BBQSQL
- Android组件复习之基本组件05—时钟组件DigitalClock和AnalogClock