2013-01-23 25 views
5

Ho bisogno di aiuto per formare un selettore jquery per restituire elementi a cui manca un particolare elemento figlio.Selettore jQuery per un elemento MANCANTE un elemento figlio

Dato il seguente frammento di codice HTML:

<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> 

trovare per me il rackunit si estende con calibrazione di NO componente. Finora ho: $ di farmi tutte le campate rackunit, non sicuro di come sia escludere quelli con un arco di componente o selezionare solo quelli senza uno ...

+1

una combinazione di: non e: dovrebbe farlo. –

risposta

8

I ("Rack .rackspace.") indovina il seguente dovrebbe funzionare:

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

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

+0

Selettori CSS, ugh ... Ah bene, funziona, ed è più breve dell'altra risposta. +1 – Cerbrus

+0

GRAZIE! L'implementazione è in realtà più complessa della domanda, ma tu hai fornito esattamente ciò di cui avevo bisogno. –

+0

@CosCallis Prego. – VisioN

3

si potrebbe usare .filter():

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

Grazie, sempre bello vedere altri modi per fare le cose. –

Problemi correlati