我想找到一种方法来计算特定的子元素,但忽略任何位于具有特定类的元素中的元素。
我在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类中的任何元素
答案 0 :(得分:1)
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;
答案 1 :(得分:0)
您可以使用filter
的callBack功能
$(".search-me").find("[class*=seI\-]").filter(function(){
return !$(this).parent(".not-me").length
}).length
答案 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>
或将最后一个选择器应用于父对象。