【问题标题】:Direct descendants only with jQuery's find()仅使用 jQuery 的 find() 的直接后代
【发布时间】:2011-12-07 12:03:32
【问题描述】:

是否可以使用 jQuery 的 find() 或 children() 函数仅选择元素的直接后代?

我有几个ul 元素,每个元素里面都有其他ul 元素,还有一些根li 元素。我将特定的父 ul 存储在一个变量中(作为一个 jQuery 对象),然后使用 my_root_ul.find('li'); 查找任何根​​ li 元素。

但是,如果有意义的话,此方法还会在 ul 中找到属于 ul 的任何 li。

我的问题是,如何使用find() 在my_root_ul 对象中仅选择li 类型的直系后代。通常情况下,我们可以使用类似$('ul > li') 的方式只返回直接的li 元素,但必须可以过滤掉返回的元素?

这里有一个例子来说明我的意思:

<ul>
    <li>I want this
        <ul>
            <li>I don't want this</li>
            <li>I don't want this</li>
            <li>I don't want this</li>
        </ul>
    </li>
    <li>I want this</li>
    <li>I want this</li>
</ul>

【问题讨论】:

  • 你想要my_root_ul.children("li")吗?
  • 你已经找到children(),应该是正确的函数。

标签: javascript jquery dom


【解决方案1】:

像这样:

my_root_ul.find('> li');

.children() 也只选择直接的孩子,所以你也可以使用它:

my_root_ul.children('li');

【讨论】:

  • 哇,我从来不知道这是可能的。谢谢!
  • my_root_ul.childNodes 也许?
  • 这行不通,因为my_root_ul 是一个 jQuery 集合,而不是一个 DOM 对象。
  • 你甚至不需要children调用中的选择器——ul元素的唯一有效直接后代是li元素。
  • "my_root_ul.find('> li');"那是黄金。甚至不知道这是一个选择!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
相关资源
最近更新 更多