JS根据子节点递归获取所有父节点的集合

JavaScript012

JS根据子节点递归获取所有父节点的集合,第1张

//传入参数:需要遍历的对象,需要匹配的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 (item.id == id) {

        // 将匹配到的结果保存到数组

        arrRes.unshift({ level, activeId: item.id })

        // 递归它的父级

        rev(obj, data.id, 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)

console.log(b) // [ { level: 0, activeId: 2 }, { level: 1, activeId: 21 } ]

js找一个子元素的父元素:

<!DOCTYPE html><html><head>

<meta charset="utf-8">

</title>    <script type="text/javascript">    function deleteElement(Obj)

{        Obj.parentNode.parentNode.removeChild(Obj.parentNode)    }    </script></head>

<body>     <ul class="list2" ><li ><img alt="" src="1.jpg" /><div>mingzi1</div>

<a onclick="deleteElement(this)">删除</a></li><li ><img alt="" src="2.jpg" />

<div>mingzi2</div><a onclick="deleteElement(this)">删除</a></li><li >

<img alt="" src="3.jpg" /><div>mingzi3</div><a onclick="deleteElement(this)">删除</a>

</li></ul></body></html>

拓展资料

删除一个父元素下面的所有子元素:

document.getElementById("ok").innerHTML = ""

删除其中的一个:

document.getElementById("ok").remove(document.getElementById("ok").children(i))

//删除id为"ok"下的第i-1个子元素

jquery中parent()可以获取父级元素,所以获得某元素父级的父级可以使用

$(selector).parent().parent()

示例如下

创建Html代码及css样式

<div class="class1">

class1

<div class="class2">

class2

<div class="class3">

class3

</div>

</div>

</div> div{padding:10px 20pxborder:4px solid #ebcbbe}

div.class1{width:200pxheight:120px}

编写jquery代码

$(function(){

$("div.class3").click(function() {

obj = $(this).parent().parent()

alert(obj.prop('class'))

})

})

查看效果