过滤只有一种子类型的父 div

Posted

技术标签:

【中文标题】过滤只有一种子类型的父 div【英文标题】:Filter parent div with only one type of child 【发布时间】:2018-04-08 18:50:43 【问题描述】:

我需要搜索具有“test”类的 div,该 div 在隐藏的子节点或子节点中只有按钮类型。这是我必须过滤的 html

<div class="test">
  <div>
    <button> <span>Button 1</span></button>
    </div>
</div>
<div class="test">
  <div>
    <button> <span>Button 2</span></button>
    <div>Div 1</div>
    <div>Div 2</div>
    <div>Div 3</div>
  </div>
</div>

基于this jQuery 选择器我一直在测试这个fiddle 但它返回我这个错误:

我一直期待返回的 div 是第一个 div。 那么我怎样才能达到呢?

【问题讨论】:

欢迎来到 Stack Overflow!您问题的全部内容必须在您的问题中in,而不仅仅是链接。链接腐烂,使问题及其答案对未来的人们毫无用处,人们不应该离开现场来帮助你。将minimal reproducible example 放入 问题中,最好使用 Stack Snippets(&lt;&gt; 工具栏按钮)使其可运行。更多:How do I ask a good question? 【参考方案1】:

这个应该可以解决问题。

var TestDivs = $(document).find(".test div button");
alert(TestDivs[0].innerHTML);

【讨论】:

【参考方案2】:

您可以比较子 div 元素和其中包含按钮元素的子 div 元素的长度:

var notButtonDivs = $('.test').filter(function()
   return $(this).find('div').length == $(this).find('div:has(button)').length
)

Working Demo

【讨论】:

以上是关于过滤只有一种子类型的父 div的主要内容,如果未能解决你的问题,请参考以下文章

过滤性选择器

jQuery选择器

路径别名与内容 ID 的上下文过滤器问题

NX二次开发-通过获取窗口句柄方式来设置类型过滤器EnumChildWindows

过滤掉 jQuery 结果集中所有具有某个类的父级(在任何级别)的元素

在R中,如何使用dplyr按数据类型过滤数据帧?