2010-01-14 7 views
9

je veux faire une boucle à travers tout menu déroulant sélectionne avec un nom de classe et ajouter un élément et je suis juste aux prises avec le sélecteur correctQuel est le bon sélecteur jquery pour obtenir toutes les listes déroulantes sélectionnées avec un certain nom de classe?


EDIT: je dois faire quelque chose de mal que la plupart des la réponse acceptée upvoted ne semble pas fonctionner, donc je pense qu'il doit y avoir une certaine bizarrerie dans mon code. J'ai collé à la fois le code HTML et le code jquery ci-dessous. faites-moi savoir si cela a du sens.


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> 

etc. . .

Code jquery:

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

    }); 

Répondre

6

Pour répondre à votre question nouvelle, vous pouvez utiliser la ligne suivante pour supprimer tous les <option> s contenant un currentComponentName:

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

Demo

11

Vous devez utiliser le .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>'); 
    ); 
}); 

Pour plus d'informations sur la façon de sélectionner correctement les éléments avec jQuery, jetez un oeil à http://docs.jquery.com/Selectors.

1

Vous devez utiliser le sélecteur .className, comme ceci:

$('select.className') 

Ce sélecteur combine le sélecteur element (correspondant à tous les <select> éléments) avec le sélecteur className (correspondant à tous les éléments qui contiennent la classe className) pour trouver tous les éléments <select> avec cette classe.

+0

Pourquoi ce downvoted? – SLaks

1

Donnez ce un coup:

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

Votre Le code jQuery posté fonctionne pour moi, tant que je définis currentComponentName comme étant l'une des options de votre sélection. La réponse d'Aron Rotteveel est très proche, mais la partie append est un peu loin, essayez ceci:

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