2010-01-14 13 views
9

i bütün açılan içinde döngü istiyorum belli bir sınıf adı ile seçer ve bir öğe eklemek ve ben sadece doğru seçici ile mücadele ediyorumBelirli bir sınıf adıyla tüm açılır menüleri almak için doğru jquery seçici nedir?


DÜZENLEME: çoğu gibi yanlış bir şey yapıyor olmalı Yaklaşan kabul edilen cevap işe yaramaz, bu yüzden kodumda bir tuhaflık olması gerektiğini düşünüyorum. Aşağıdaki HTML ve jquery kodunu da yapıştırdım. Bu mantıklı olursa haberim olsun.


HTML:

<select onfocus="this.enteredText='';" onkeydown="return handleKey();" onkeyup="event.cancelbubble=true;return false;" onkeypress = "return selectItem();" class="componentSelect" id="components0" name="applicationUpdater.dependencies[0].componentName" > 
<option value= 5 >Client</option> 
<option value= 79 >Server</option> 
</select> 

<select onfocus="this.enteredText='';" onkeydown="return handleKey();" onkeyup="event.cancelbubble=true;return false;" onkeypress = "return selectItem();" class="componentSelect" id="components1" name="applicationUpdater.dependencies[0].componentName" > 
<option value= 5 >Client</option> 
<option value= 79 >Server</option> 
</select> 

vb. . .

jquery kodu:

$('select.componentSelect').each(function() { 
     var select = $(this); 
     $(select).children('option').each(function() { 
      if ($(this).text() == currentComponentName) { 
       $(this).remove(); 
      } 
     }); 

    }); 

cevap

6

Yeni soruyu cevaplamak için, içeren tüm <option> s bir currentComponentName kaldırmak için aşağıdaki satırı kullanabilirsiniz::

11

Sen .class selector kullanmalıdır.

// select every <select> element with classname "yourclassname" 
$('select.yourclassname').each(function() { 
    // $(this) now refers to one specific <select> element 
    // we append an option to it, like you asked for 
    $(this).append(
     $('<option value="foo">Bar</option>'); 
    ); 
}); 

düzgün jQuery ile elemanlarını nasıl seçileceği hakkında daha fazla bilgi için, http://docs.jquery.com/Selectors bakabilirsiniz.

1

Bunu, .className seçici kullanmak gerekir:

$('select.className') 

Bu selektör bulmak için (className sınıfını içeren tüm unsurları eşleşen) className seçici ile (hepsi <select> unsurları eşleşen) element seçici birleştirir Bu sınıfa sahip tüm <select> öğeleri.

$('select.className').each(function() { 
    var currentSelect = $(this); 
    // ... do your thing ;-) 
}); 
+0

Neden bu durum reddedildi? – SLaks

1

bu bir şans verin

$('select.componentSelect option:contains("' + currentComponentName + '")').remove(); 

Demo

1

Sizin jQuery kodu benim için çalışıyor, currentComponentName'u tanımladığınız sürece, seçeceğiniz seçeneklerden biri. Aron Rotteveel'in cevabı çok yakın, ancak ek bölüm biraz kapalı, bunu deneyin:

$('select.componentSelect').each(function() { 
    $(this).append('<option value="foo">Bar</option>'); 
}); 
İlgili konular