2013-01-23 16 views
5

Potrzebuję pomocy w tworzeniu selektora jquery, aby zwracać elementy, które nie mają określonego elementu potomnego.selektor jquery dla elementu BRAK elementu potomnego

Biorąc pod uwagę następujące HTML fragment:

<div id="rack1" class="rack"> 
    <span id="rackunit1" class="rackspace"> 
     <span id="component1">BoxA</span> 
     <span id="label1">Space A</span> 
    </span> 
    <span id="rackunit2" class="rackspace"> 
     <span id="label2">Space B</span> 
    </span> 
    <span id="rackunit3" class="rackspace"> 
     <span id="component2">BoxA</span> 
     <span id="label3">Space C</span> 
    </span> 
</div> 
<div id="rack2" class="rack"> 
    <span id="rackunit4" class="rackspace"> 
     <span id="component3">BoxC</span> 
     <span id="label4">Space D</span> 
    </span> 
    <span id="rackunit5" class="rackspace"> 
     <span id="label5">Space E</span> 
    </span> 
    <span id="rackunit6" class="rackspace"> 
     <span id="component4">BoxD</span> 
     <span id="label6">Space F</span> 
    </span> 
</div> 

Znajdź dla mnie rackunit obejmuje z zakresu komponentów NO. tej pory mam: $, aby dostać mi wszystkich przęseł rackunit, nie wiem, w jaki sposób albo wykluczyć te, o rozpiętości komponentu lub wybrać tylko te, bez jednego ...

+1

Połączenie: nie i: powinno. –

Odpowiedz

8

I („Rack .rackspace”). Zgadnij co następuje powinno działać:

$(".rack .rackspace:not(:has(span[id^=component]))"). ... 

DEMO:http://jsfiddle.net/WbCzj/

+0

Selektory CSS, ugh ... No cóż, to działa, i jest krótszy niż druga odpowiedź. +1 – Cerbrus

+0

DZIĘKI! Wdrożenie jest w rzeczywistości bardziej złożone niż pytanie, ale zapewniłeś dokładnie to, czego potrzebowałem. –

+0

@CosCallis Nie ma za co. – VisioN

3

można użyć .filter():

$('.rack .rackspace').filter(function() { 
    return $(this).find('span[id^="component"]').length === 0; 
}); 
+0

Dzięki, zawsze dobrze widzieć inne sposoby robienia rzeczy. –

Powiązane problemy