JQuery,检索子代和孙代

0s7z1bwu  于 2023-01-30  发布在  jQuery
关注(0)|答案(3)|浏览(127)

假设我有一个JQuery对象,它具有(或指向)这样的结构:

<div id="parent">
  <div id="child1">
    <div id="grandchild1">
      // ... grandchild can also have children
    </div>
    // ... and so on of grandchildren
  </div>
  <div id="child2">

  </div>
  // .... and so on
</div>

是否有可能像这样从我的对象中获取普通的元素数组(JQuery对象):

['parent', 'child1', 'child2', ..., 'grandchild1', ...]

谢谢
请注意,它不能是类似于$('div〉div'的选择器,因为我已经有了JQuery对象,只有从这个对象中我才需要取东西。

70gysomp

70gysomp1#

你可以使用*选择器来检索子项和孙项。这些项将以树的顺序返回。然后你可以使用jQuery.toArray()来获得一个普通的元素数组:

$(function() {
  let a = $("#wrapper")
    .find("*")
    .addBack() // add the previous match i.e. #wrapper itself to the collection
    .toArray();
  console.log(a);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="wrapper">
  <div id="parent">
    <div id="child1">
      <div id="grandchild1">
        <div class="level-4"></div>
        <div class="level-4"></div>
        <div class="level-4"></div>
      </div>
    </div>
    <div id="child2">
      <div class="level-3"></div>
      <div class="level-3"></div>
      <div class="level-3"></div>
      <div class="level-3">
        <div class="level-4"></div>
        <div class="level-4"></div>
        <div class="level-4"></div>
      </div>
    </div>
  </div>
</div>

下面是一个多余的,但如果你对使用递归迭代 * hierarchy * 更感兴趣的话,它会很有用:
一个二个一个一个

xghobddn

xghobddn2#

可以使用toArray()[docs]方法将jQuery对象转换为Array。

var arr = my_obj.toArray();

...或者get()[docs]方法(如果不向其传递任何参数)。

var arr = my_obj.get();

如果我理解错了,您指向的是结构的 root,并且需要获取它的后代,请使用find()[docs] method方法。

var descendants = my_obj.find('div');

jQueryhas many traversal methods,允许您从给定点绕过DOM结构。
如果你 * 只是 * 想要孩子和孙子,而不是更深层次的,那么就这样做:

var two_generations = my_obj.find('> div > div');

这将为您提供只有2代深度的div元素。
如果不想将其限制为div元素,请执行以下操作:

var two_generations = my_obj.find('> * > *');
fdbelqdn

fdbelqdn3#

嘿,伙计,我刚到这里,我也有过类似的大脑放屁。要得到孙子,我建议使用.children()方法:

$('#parent') //selects the parents
$('#parent').children() //selects the children
$('#parent').children().children() //selects the grandchildren

相关问题