2014-04-05 28 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

相關問題