如何使用 jQuery 查询不被任何其他 div 元素包含的 div 元素?

发布于 2025-01-11 10:54:55 字数 624 浏览 0 评论 0原文

$('div') 将查找所有

元素。

但是,我想查询这样的情况:

<div class="shoud_be_in_query">
  <div> test </div>
</div>
<section>
  <div class="shoud_be_in_query">
      <div> test </div>
  </div>
  <div class="shoud_be_in_query">
      <div> test </div>
  </div>
</section>
<section>
  <section>
    <div class="shoud_be_in_query"> test </div>
  </section>
</section>

我想查询所有不是任何其他 div 子级的 div 。有什么办法可以做到这一点吗?

$('div') will find all the <div> elements.

However, I want to query such situation:

<div class="shoud_be_in_query">
  <div> test </div>
</div>
<section>
  <div class="shoud_be_in_query">
      <div> test </div>
  </div>
  <div class="shoud_be_in_query">
      <div> test </div>
  </div>
</section>
<section>
  <section>
    <div class="shoud_be_in_query"> test </div>
  </section>
</section>

I want to query out all the div that is not a children of any other div. Is there any way to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

伤痕我心 2025-01-18 10:54:55

您可以使用.filter(),例如:

$("div").filter(function() {
  return $(this).parent()[0].tagName !== "DIV"
})

演示

console.log($("div").filter(function() {
  return $(this).parent()[0].tagName !== "DIV"
}).length)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="shoud_be_in_query">
  <div> test </div>
</div>
<section>
  <div class="shoud_be_in_query">
    <div> test </div>
  </div>
  <div class="shoud_be_in_query">
    <div> test </div>
  </div>
</section>
<section>
  <section>
    <div class="shoud_be_in_query"> test </div>
  </section>
</section>

You can use the .filter() like:

$("div").filter(function() {
  return $(this).parent()[0].tagName !== "DIV"
})

Demo

console.log($("div").filter(function() {
  return $(this).parent()[0].tagName !== "DIV"
}).length)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="shoud_be_in_query">
  <div> test </div>
</div>
<section>
  <div class="shoud_be_in_query">
    <div> test </div>
  </div>
  <div class="shoud_be_in_query">
    <div> test </div>
  </div>
</section>
<section>
  <section>
    <div class="shoud_be_in_query"> test </div>
  </section>
</section>

初心 2025-01-18 10:54:55

您可以尝试这种方式来过滤掉所有具有 div 父元素的元素。

$('div').filter((index, element) => $(element).parent()[0].localName !== 'div')

You can try this way to filter all elements having div parents out.

$('div').filter((index, element) => $(element).parent()[0].localName !== 'div')

森林迷了鹿 2025-01-18 10:54:55

假设:

我想查询所有不是任何其他div的的div

您可以使用可以与 jQuery、document.querySelectorAll 或 CSS 一起使用的选择器

:not(div) > div

(因此不需要 js,具体取决于什么)你需要它)

示例:

console.log($("div").length)
console.log($(":not(div) > div").length)
console.log($(":not(div) > div").filter(".shoud_be_in_query").length == $(":not(div) > div").length)
console.log($(":not(div) > div").filter(":not(.shoud_be_in_query)").length == 0)


console.log(document.querySelectorAll(":not(div) > div").length)
:not(div)>div {
  border: 1px solid red;
}

div {
  border: 1px solid blue;
  margin: 2px;
  padding: 2px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="shoud_be_in_query">
  <div> test </div>
</div>
<section>
  <div class="shoud_be_in_query">
    <div> test </div>
  </div>
  <div class="shoud_be_in_query">
    <div> test </div>
  </div>
</section>
<section>
  <section>
    <div class="shoud_be_in_query"> test </div>
  </section>
</section>

Assuming:

I want to query out all the div that is not a child of any other div

You can use the selector

:not(div) > div

which you can use with jQuery, document.querySelectorAll or CSS (so no need for js depending on what you need it for)

Example:

console.log($("div").length)
console.log($(":not(div) > div").length)
console.log($(":not(div) > div").filter(".shoud_be_in_query").length == $(":not(div) > div").length)
console.log($(":not(div) > div").filter(":not(.shoud_be_in_query)").length == 0)


console.log(document.querySelectorAll(":not(div) > div").length)
:not(div)>div {
  border: 1px solid red;
}

div {
  border: 1px solid blue;
  margin: 2px;
  padding: 2px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="shoud_be_in_query">
  <div> test </div>
</div>
<section>
  <div class="shoud_be_in_query">
    <div> test </div>
  </div>
  <div class="shoud_be_in_query">
    <div> test </div>
  </div>
</section>
<section>
  <section>
    <div class="shoud_be_in_query"> test </div>
  </section>
</section>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文