
如果是sql,你分多次请求,就如下,如果你是读取一次后,保存到缓存,或者XML等文件中,那么你就需要使用程序递归来处理
1、只看该父级下的自己
select from Area
where pid = 你点击的内容的ID
2、CTE递归得到该父级下的所有子级(包含子级的子级)数据
完整的例子如下
--CTE递归查询if(object_id(N'menu') > 0)
drop table menu
CREATE TABLE MENU
(
name nvarchar(50) NOT NULL PRIMARY KEY,
senior nvarchar(50) NULL
);
INSERT INTO MENU values
('文件',NULL),
('新建','文件'),
('项目','新建'),
('项目11111','项目'),
('项目22222','项目'),
('项目33333','项目'),
('使用当前连接查询','新建');
WITH lmenu(name,senior,level) as
(
SELECT NAME,SENIOR,0 level FROM MENU WHERE name = '新建'
UNION ALL
SELECT ANAME,ASENIOR,blevel+1 FROM MENU A,lmenu b
where asenior = bname
)
SELECT from lmenu
您可以使用 ElementparentNode 属性来获取元素的父级。
您还可以将它们串在一起以提升几个级别。
您可以使用 Elementclosest() 方法获取与选择器匹配的 DOM 树上最近的父级。
Elementclosest() 方法从元素本身开始。您可以通过将第一个父元素与 NodeparentNode 属性配对来开始。
可能最常用的是使用 Elementclosest() 方法来检查元素是否在某个父元素中。
它与事件侦听器的事件委托配合时特别有用。
例如,假设您有一些按钮,其中包含一些嵌套的 HTML,如下所示。
你的 JavaScript 监听这些按钮的点击看起来像这样。
这将永远不会运行,因为点击事件的目标几乎总是 text-large 或 text-small 元素。仅当您单击按钮中的文本之外时才有效。
为了解决这个问题,我们可以使用 Elementclosest() 方法。
Elementclosest() 方法有很多用途 ,这只是其中之一。
使用 closest 和 matches 方法来检测元素是否存在某选择器
这样的用简单的判断就行了 :先判断PID为空的,这个是父节点,然后取出PID为空的Id当做取其子节点的父节点,一次判断就行了,结合列子:取PID为空的ID即1,2,然后把取PId等于1和2的ID即345和6然后分别挂在1和2下,345就是1的子节点,6是2的子节点,有多节点的一次类推(这只是其中一个简单的方法)
在开发vue项目中大多数都会用到element-ui但是elemnet-ui里有的组件方法没有达到我们的预期,这是我在开发中遇到的问题分享给大家 话不多说是上代码。
首先引入Tree组件
//<template> <el-tree :data="roleTree" show-checkbox node-key="id" @check="changeSelect" :props="defaultProps" ref="tree" :default-checked-keys="TreeKeys" :render-after-expand="true" > </el-tree>
2获取选中的子级以及父级
data() { return { roleTree:[] defaultProps: { children: "children", label: "label",getParId:[] }, } } methods: { //当复选框被点击的时候触发 changeSelect(data, check) { //getCheckedNodes 接收两个 boolean 类型的参数,1 是否只是叶子节点,默认值为 false 2 是否包含半选节点,默认值为 false thisTreeList= this$refstreegetCheckedNodes(false, true)map(i => iid); } }
3回显
//获取后端放返回的树形json reqRoleTree(){ getTree()then(res=>{ //tree赋值 thisroleTree=resdata //用于存放所有父级 let treeData = resdata; //使用递归获取所有父级id function getIds(arr, result = []) { arrforEach(item => { if (itemchildrenlength !== 0) { resultpush(itemid); if (itemchildrenlength) { return getIds(itemchildren, result); } } }); return result; } //存放所有父级id的合集 thisgetParId = getIds(treeData); }) } //回显 setDate(data){ //data回显的json if (datalength) { //回显id合集arr var arr = datamap(k => { return kid; }); //筛选不是父级节点的id let arrList = arrfilter(item => { if (!thisgetParIdincludes(item)) { return item; } }) ; thisresChecked = arr; this$refstreesetCheckedKeys(arrList); } }
以上就是关于地区—内地—省—市—县,写一条SQL语句,无论点谁都能看到所有下级内容, 表:area id ,parentid ,name全部的内容,包括:地区—内地—省—市—县,写一条SQL语句,无论点谁都能看到所有下级内容, 表:area id ,parentid ,name、获取父级元素、怎么取树状结构中某节点的包含其所有父级节点的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)