在线效果
var dlist = [ { name: 'n1', id: 'n1', child: [ { name: 'n1-1', id: 'n1-1', child: [ name: 'n1-2', id: 'n1-2' ], }, { name: 'n2-2', id: 'n2-2' } ] }, { name: 'n2', id: 'n2' }, ]类似于这种,子集是无限级的情况
当我们操作父级控制子集,这很好办。 当操作子集,去控制父级的情况,逻辑是:获取当前子集的父级,再针对各种情况递归操作。 主要方法:获取当前子集的父级的方法:
function getParent(id) { for (var i=0; i<dlist.length; i++) { if (dlist[i].id==id) { return null; } } return _getParent(dlist); function _getParent(list) { var childlist, isExist = false; for (var i=0; i<list.length; i++) { if (childlist=list[i].children) { childlist.forEach(function(v,i2) { if (v.id==id) isExist = true; }); if (isExist) { return list[i]; } if (_getParent(childlist)) { return _getParent(childlist); } } }; } }