2014-04-05 29 views
1

实施例:如何选择另一个元素(e)的子元素(se),但不包括所选子元素(sse)的子元素之一?

.element 
    | 
    |-.subelement 
     | 
     |-.subsubelement1 
     |-.subsubelement2 
     |-.subsubelement3 
     |-.non-desired-subsubelement 
     |-.subsubelement4 

所以如何不列出所有期望subsubelements(例如是未知的),但仍然接收聚集的元件及其子元素的.subelement.subsubelementX而不.non-desired-subsubelement

不是数组[subsubelement1, subsubelement2, subsubelement3, subsubelement4]

但是聚合元素subelement,没有non-desired-subsubelement作为其后裔:

.subelement 
    | 
    |-.subsubelement1 
    |-.subsubelement2 
    |-.subsubelement3 
    |-.subsubelement4 

我想到这个问题:

$('.element .subelement:not([class^="non-desired-subsubelement"])') // selects subelements which has no class non-desired-subsubelement 

将是不错的东西,如:

$('.element .subelement:not(>>this<<:has([class^="non-desired-subelement"]))') 

即使用负 “有” 选择;或者是这样的:

$('.element .subelement:has-not([class^="non-desired-subelement"])') // much nicer 

或者是容易得到.subelement,比删除.non-desired-subsubelement,这样做的两个步骤?

var subelement = $('.element .subelement'); 
subelement.remove('.non-desired-subsubelement'); 

可能还有一个复杂的选择器?

+0

你有什么问题实际上是..? –

+0

以优雅的方式选择一个没有其后代的元素,而不是以多个步骤(如我在问题底部提出的)。换句话说:选择一个元素的后代没有不需要的类 – static

+0

试试这个'$('。element .subelement')。not(this).not(':has([class^=''不需要'');');' – dreamweiver

回答

0

你可以试试这个:

$('.element .subelement [class^="sub"])

+0

nope,这样我只会得到一个[“.subsubelement1”,“。subsubelement2”,“。subsubelement3”,“.subsubelement4”]的数组,而不是以该数组作为属性的“.subelement”。这对获取“.subelement”数组非常重要(如果存在任何问题:不在问题的初始示例中),该数组仅包含所需的“.subsubelementX”数组作为属性。不过,谢谢你的解决方案。 – static

相关问题