javascript - 如何遍历DOM准备树结构数组

标签 javascript jquery arrays object

我想通过使用 Javascript/jQuery 遍历 DOM 来准备一个嵌套数组。感兴趣的元素位于 #container 元素中,并且具有 dot 类或者是 input 元素。

我想准备像 [name,name1,[name2]] 这样的数组。我在这里使用的主要是使用递归等技术。但我无法让它工作:

fiddle

$(document).ready(function(){
    var arr = [];
    function recurse(parent, arr){
        var temp = [];
        parent.find('*').each(function(){
    	    if($(this).is('input')){
                if($(this).parents('.dot').length==1){
                    console.log($(this));
                    temp.push($(this).attr('id'))
                }
            }
            if($(this).is('.dot')){
                recurse($(this), arr);
            }
        });
        arr.push(temp);
        return arr;
    }
    var elm = $('#container').find('.dot:first');
    console.log(recurse(elm, arr));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
  <div class="dot">
      <div class="dot">
          <input type="password" id="name2" name="name2">	
      </div>
      <input type="text" id="name" name="name">
      <input type="password" id="name1" name="name1">
  </div>
</div>

最佳答案

这里是如何让它发挥作用的。无需将 arr 作为参数传递:

function recurse($parent) {
    var arr = [];
    $parent.children('.dot, input').each(function(){
        arr.push($(this).is('input') ? $(this).attr('id') : recurse($(this)));
    });
    return arr;
}

$(function () {
    var elm = $('#container>.dot:first');
    console.log(recurse(elm));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
  <div class="dot">
      <div class="dot">
          <input type="password" id="name2" name="name2">	
      </div>
      <input type="text" id="name" name="name">
      <input type="password" id="name1" name="name1">
  </div>
</div>

关于javascript - 如何遍历DOM准备树结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54054179/

相关文章:

javascript - AJAX mvc web api : create div with images

JavaScript - 保留尾随零

javascript - 有没有办法使用 jquery 获取页面上元素的 x 和 y 位置而不是绝对位置?

c++ - 获取 OpenCV Mat 中唯一像素值的列表

javascript - Node 中带有 Mongoose 和 Promise 的奇怪异步行为

javascript - 如何通过对象构造url参数

jquery - 在不复制代码的情况下扩展 jQuery 函数

javascript - 使用条件 : is a number? 减少方法 os 对象数组

java - 如果语句依赖于传递什么命令行参数?

javascript - NodeJS - 将命令行输出存储为 var 并通过 res.send() 将其返回给客户端