【问题标题】:Selecting all divs except one选择除一个以外的所有 div
【发布时间】:2012-06-16 06:25:28
【问题描述】:
<div id="main">
 <div class="a"></div>
 <div class="b"><p>not me</p></div>
 <div class="b"></div>
 <div class="b"></div>
 <div class="c"></div>
</div> 

我们如何编写一个选择器来选择all divs with class b,除了&lt;p&gt;not me&lt;/p&gt;的孩子?

【问题讨论】:

    标签: javascript jquery jquery-selectors dom-traversal


    【解决方案1】:
    $('div.b:not(:has(p))').........
    

    或可读版本

    $('div.b').filter(function(){
        return !$(this).find('p').length;
    });
    

    如果你也想匹配内容:

    $('div.b').filter(function(){
        return $(this).find('p').text() !== "not me";
    });
    

    Live DEMO

    【讨论】:

    • 或介于两个选项之间:$('div.b').not(':has(p)')。关于最后一个选项,我知道示例标记没有这个问题,但如果特定 div 有多个段落怎么办?
    【解决方案2】:

    演示 http://jsfiddle.net/46nC5/1/

    由于你是专门找class b所以做了一个demo给你分享一下。

    在此演示中,您将看到 not me 逐渐消失,其余部分将保持原样。

    即使用:not + :has 可以做到

    代码

    $('div.b:has(p)').​
    

    $('div.b:not(:has(p))')
    

    【讨论】:

      【解决方案3】:
      $('div.b').filter(function () {
          return $(this).find('p:contains(not me)').length == 0;
      })
      

      jsFiddle Demo

      【讨论】:

        【解决方案4】:

        我通常做的最好的方法:

        $('div.b').filter(function () {
           return !$(this).hasClass('notMe');
        });
        
        
        <div id="main">
             <div class="a"></div>
             <div class="b notMe"><p>not me</p></div>
             <div class="b"></div>
             <div class="b"></div>
             <div class="c"></div>
        </div> 
        

        【讨论】:

          【解决方案5】:

          这将为您提供 两个 div,它们具有 class="b"没有 p(段落)

          Live Demo

          $('div.b:not(:has(p))')
          

          【讨论】:

            【解决方案6】:

            还有一个

            $("div.b:contains('not me')")
            

            编辑:对不起,这里没有

            $("div.b:not(:contains('not me'))")
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-10-25
              • 2011-01-16
              • 1970-01-01
              • 2016-08-19
              • 1970-01-01
              • 2018-01-08
              • 2011-04-30
              • 2012-02-01
              相关资源
              最近更新 更多