2013-01-23 15 views
5

Ich brauche Hilfe, einen jquery-Selektor zu bilden, um Elemente zurückzugeben, denen ein bestimmtes Kindelement fehlt.jquery-Selektor für ein Element VERMISST ein untergeordnetes Element

mit dem folgenden 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> 

für mich Finden Sie die rackunit mit NO-Komponente Spannweite erstreckt. Bisher habe ich: $ mich all die rackunit Spannweiten zu bekommen, nicht sicher, wie entweder ohne eine solche, die mit einer Komponente Spanne oder wählen Sie nur ...

+1

eine Kombination von: nicht und: muss es tun. –

Antwort

8

I auszuschließen („Rack .rackspace.“) guess sollten folgende arbeiten:

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

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

+0

CSS-Selektoren, ugh ... Ah, es funktioniert, und es ist kürzer als die andere Antwort. +1 – Cerbrus

+0

DANKE! Die Implementierung ist tatsächlich komplexer als die Frage, aber Sie haben genau das geliefert, was ich brauchte. –

+0

@CosCallis Gern geschehen. – VisioN

3

Sie nutzen könnten .filter():

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

Danke, immer gut, um andere Möglichkeiten zu sehen, Dinge zu tun. –

Verwandte Themen