【问题标题】:Get all parents that don't have a child with a certain class获取所有没有某个班级的孩子的父母
【发布时间】:2018-01-12 03:49:44
【问题描述】:

我想使用 jQuery 选择所有 div 的父级,没有子级 locked

示例代码:

<div class='myparent'>
    <div class='mychild locked'></div>
</div>
<div class='myparent'>
    <div class='mychild locked'></div>
</div>
<div class='myparent'>
    <div class='mychild'></div>
</div>

我觉得我真的很亲密:

$('div.myparent:not(:has(div[class=locked]))')

但这不起作用。

【问题讨论】:

    标签: javascript jquery html arrays jquery-selectors


    【解决方案1】:

    你可以只使用类选择器,不需要属性选择器DEMO

    $('.myparent:not(:has(div.locked))')
    

    注意:- 你也可以这样做:- $('.myparent:not(:has(.locked))')

    【讨论】:

      【解决方案2】:
      1. 子类并使用 not() 排除锁定类,然后使用父类锁定父类

      $(".mychild:not(.locked)").parent().css("color","red")
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div class='myparent'>
          <div class='mychild locked'>1</div>
      </div>
      <div class='myparent'>
          <div class='mychild locked'>2</div>
      </div>
      <div class='myparent'>
          <div class='mychild'>3</div>
      </div>

      【讨论】:

        【解决方案3】:

        另一种选择是在没有locked 子级的myparent 之外使用jquery filterfilter - 请参见下面的演示:

        $('.myparent').filter(function(){
          return !$(this).find('.locked').length;
        }).css('color','blue');
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <div class='myparent'>
            <div class='mychild locked'>one</div>
        </div>
        <div class='myparent'>
            <div class='mychild locked'>two</div>
        </div>
        <div class='myparent'>
            <div class='mychild'>three</div>
        </div>

        【讨论】:

          猜你喜欢
          • 2018-01-29
          • 1970-01-01
          • 2013-06-23
          • 2021-07-04
          • 2021-12-02
          • 2019-05-02
          • 2013-11-23
          • 2022-01-15
          • 2018-08-11
          相关资源
          最近更新 更多