2010-01-14 4 views
9

voglio il ciclo di tutti discesa seleziona con un certo nome della classe e aggiungere un elemento ad esso e sto solo lottando con il selettore correttaQual è il selettore jquery corretto per ottenere tutti i menu a discesa di selezione con un determinato nome classe?


EDIT: io devo fare qualcosa di sbagliato, come la maggior parte di la risposta accettata con upvoted non sembra funzionare così penso che ci deve essere qualche stranezza nel mio codice. Ho incollato sia il codice HTML che il codice jquery di seguito. fammi sapere se questo ha un senso.


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> 

ecc. . .

codice jQuery:

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

    }); 

risposta

6

Per rispondere alla tua nuova domanda, è possibile utilizzare la seguente riga di rimuovere tutti <option> s che contengono una currentComponentName:

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

Demo

11

si dovrebbe usare il .class selector.

// 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>'); 
    ); 
}); 

Per ulteriori informazioni su come selezionare correttamente gli elementi con jQuery, un'occhiata a http://docs.jquery.com/Selectors.

1

È necessario utilizzare il selettore .className, in questo modo:

$('select.className') 

Questo selettore combina il selettore element (corrispondenti tutti <select> elementi), con il selettore className (corrispondenza di tutti gli elementi che contengono la classe className) per trovare tutti gli elementi <select> con quella classe.

+0

Perché è stato downvoted? – SLaks

1

Dare a questo un colpo:

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

tuo il codice jQuery pubblicato funziona per me, purché definisco currentComponentName come una delle opzioni della selezione. La risposta di Aron Rotteveel è molto vicina, ma la parte di append è un po 'spenta, prova questo:

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