jQuery选择器,它排除了DOM的子树

时间:2014-02-14 03:54:41

标签: javascript jquery jquery-selectors

是否有一个jQuery选择器可以获取类 A 的所有元素,而不是类 B 的后代?

示例:

<body>
   <div class=report-value id=overview></div>
   <div class=panels>
      <div class=report-value id=sales></div>
      <div class=report-value id=training></div>
      <div class=report-value id=hr></div>
   </div>
   <div class=report-value id=summary></div>
</body>

对于上面的示例,需要选择不是.report-value元素后代的所有.panels元素。报告值计算量很大,只有在实际显示时才需要计算。

类似的东西:

var elems = $('.report-value:excludeTree(.panels)');

将返回仅包含#overview#summary

的jQuery对象

性能对此Web应用程序非常重要。

5 个答案:

答案 0 :(得分:2)

您可以使用.not()过滤掉这些元素

$('.report-value').not('.panels .report-value')

演示:Fiddle

答案 1 :(得分:1)

尝试,

var elems = $('.report-value').filter(function(){ 
                 return $(this).closest('.panels').length ==0; 
            });

DEMO

答案 2 :(得分:0)

var allpanels=$('body>.report-value');

答案 3 :(得分:0)

$('body > .report-value')

$('.report-value').each(function(){
if(!$(this).parent().hasClass('.panels'))
{
//use query
}
});

答案 4 :(得分:0)

试试这个:

$('.report-value').each(function(){
if(!$(this).parent().hasClass('panels') && !$(this).parents().eq(1).hasClass('panels'))
{
console.log($(this));
}
});

它仅控制你需要的divs