2013-01-23 19 views
5

Belirli bir alt öğe eksik olan öğeleri döndürmek için bir jQuery seçici oluşturmaya yardım etmem gerekiyor.Bir öğe için jquery seçici Bir alt öğeyi YANLIYOR

aşağıdaki HTML parçası Verilen:

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

rackunit YOK bileşen açıklıklı yayılan benim için bulun. ...

+1

bir kombinasyon: değil ve: yapmalı. –

cevap

8

I $, bana bir bileşen yayılma olanlar hariç veya işareti olmayan sadece bu seçmek için ya nasıl emin rackunit aralıkların tüm değil almak için (".rackspace raf."): Böylece kadarıyla var aşağıdaki çalışması gerekir sanırım:

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

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

+0

CSS seçiciler, ah ... Ah, işe yarıyor, ve diğer cevaptan daha kısa. +1 – Cerbrus

+0

TEŞEKKÜRLER! Uygulama aslında sorudan daha karmaşıktır ama tam olarak ihtiyacım olan şeyi sağladınız. –

+0

@CosCallis Rica ederim. – VisioN

3

Şunları kullanabilirsiniz .filter():

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

Teşekkürler, her şeyi yapmanın başka yollarını görmek her zaman iyidir. –