使用jquery .find()来计算元素,但忽略特定div中的那些元素

时间:2016-04-19 17:07:15

标签: jquery html find

我想找到一种方法来计算特定的子元素,但忽略任何位于具有特定类的元素中的元素。

我在div元素中使用$('.search-me').find('[class*=seI\\-]').length计算元素。这将计算所有具有以'seI-'开头的类的元素。

我想对此进行优化,以忽略位于子div元素中的任何匹配元素,类'.not-me'

所以给出了这个HTML:

<div class="search-me">
  <div class="seI-1"></div>
  <div class="seI-2"></div>
  <div class="not-me">
    <div class="seI-3"></div>
  </div>
</div>

只计算seI-1和seI-2,忽略.not-me类中的任何元素

3 个答案:

答案 0 :(得分:1)

您可以将 filter() :not() 选择

一起使用

&#13;
&#13;
var $ele = $('.search-me').find('[class*=seI\-]').filter(':not(.not-me *)');

console.log($ele.length);
$ele.css('color', 'red');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="search-me">
  <div class="seI-1">1</div>
  <div class="seI-2">2</div>
  <div class="not-me">
    <div class="seI-3">3</div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用filter的callBack功能

来完成此操作
$(".search-me").find("[class*=seI\-]").filter(function(){
 return !$(this).parent(".not-me").length
}).length

DEMO

答案 2 :(得分:0)

你可以试试这个:

    document.write("Number of selected elements:" + $('.search-me').parent().find(".search-me > [class*=seI\-]").length);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div class="search-me">
      <div class="seI-1">1</div>
      <div class="seI-2">2</div>
      <div class="not-me">
        <div class="seI-3">3</div>
      </div>
    </div>

或将最后一个选择器应用于父对象。