
我试过了,有作用的,你要么就委派事件,如果还不可以的话,delegate知道吧???
<!DOCTYPE HTML>
<html>
<head>
<meta charset=UTF-8>
<meta name="keywords" content="节点,有的,元素,对象,兄弟">
<title>白菜编辑部</title>
<style type="text/css">
</style>
<script type="text/javascript" src="jquery-180minjs"></script>
<script type="text/javascript">
jQuery (function ($)
{
$ ('body')append ('<div class="out"><a></a><h1></h1><div class="btn">btnbtnbtn</div></div>');
$ ('divout')mouseover (function ()
{
$ ('btn')show ();
})mouseout (function ()
{
$ ('btn')hide ();
});
});
</script>
</head>
<body>
</body>
</html>
我们仅仅知道用户点击的那一条数据,所以这条数据必须是唯一的才能构建一颗唯一的树结构,如果后端给不到你唯一的值,一定要让他给你生成一个唯一值id
我采用的string切割插入值
table初始化进来只有一层,并且是固定的
此时生成的是
//传入参数:需要遍历的对象,需要匹配的id,获取所有的父级节点的Id
function findIdList(data2, id, children = 'children', level = 0) {
var arrRes = [];
let obj = {
id: 0,
[children]: data2
}
let rev = (data, id, level) => {
if (!data || !data[children] || !data[children]length) {
return;
}
for (var i = 0; i < data[children]length; i++) {
let item = data[children][i];
if (itemid == id) {
// 将匹配到的结果保存到数组
arrResunshift({ level, activeId: itemid });
// 递归它的父级
rev(obj, dataid, 0);
break;
} else if (item[children] && item[children]length > 0) {
//如果有子集,则把子集作为参数重新执行本方法
rev(item, id, level + 1);
}
}
};
rev(obj, id, level);
return arrRes;
}
let list = [
{id: 1, children: [
{id: 11, children: [{id: 12}]}
]},
{id: 2, children: [{id:21, children: [{id: 31}]}]}
]
let b = findIdList(list, 21)
consolelog(b) // [ { level: 0, activeId: 2 }, { level: 1, activeId: 21 } ]
1、用 childNodes 属性,按顺序取
实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。
//pId 待取节点父节点序号
//cId 待取节点序号
function getXmlNodeValue(pId, cId) {var xmlDoc = new ActiveXObject("MicrosoftXMLDOM");
xmlDocasync = false;
xmlDocload("employeeInfoxml");
var nodes = xmlDocdocumentElementchildNodes[pId]childNodes[cId];return nodeschildNodes[0]text;
}
调用方法:alert(getXmlNodeValue(1, 2));
2、用 for 循环来取
实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。
//nodeValue 待取节点的所属节点值
function getXmlNodeValueFor(nodeValue){var xmlDoc;
try {
//创建一个 ie 支持的 XML 文档对象
xmlDoc = new ActiveXObject("MicrosoftXMLDOM");
}catch(e){
try{
//创建FireFox空的XML文档对象
xmlDoc=documentimplementationcreateDocument("","",null);
}catch(e){
alert(emessage);
return "";
}
}
xmlDocasync = false;
try {
xmlDocload("employeeInfoxml");
}catch(e){
alert(emessage);
return "";
}
var xd=xmlDocdocumentElementchildNodes;
if(xd==null)
return "";
var tempValue;
for(var i=0;i<xdlength;i++){
if(xd[i]childNodes[0]childNodes[0]nodeValue==nodeValue) tempValue=xd[i]childNodes[2]childNodes[0]nodeValue;
}
return tempValue;
}
调用方法:alert(getXmlNodeValueFor("王佳琳"));
$('#id')siblings() 当前元素所有的兄弟节点
$('#id')prev() 当前元素前一个兄弟节点
$('#id')prevaAll() 当前元素之前所有的兄弟节点
$('#id')next() 当前元素之后第一个兄弟节点
$('#id')nextAll() 当前元素之后所有的兄弟节点
这三个方法都可以添加选择器,给出选择条件,就能找到你指定的兄弟节点了。
(1)如获得id为test标签子元素的个数:
documentgetElementById("test")ChildNodeslength
documentgetElementById('test')childrenlength
(2)上面两种方法皆可来获得子元素的个数,但是要注意各个浏览器的差异性,也得斟酌下差异性
以上就是关于js 获得某节点的子节点,已知该子节点为div全部的内容,包括:js 获得某节点的子节点,已知该子节点为div、JS树结构生成与获取到根节点的路径、JS根据子节点递归获取所有父节点的集合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)