2010-07-21 6 views
4

J'ai une liste déroulante, et dans un autre processus ajouter des optgroups/options à cette liste déroulante, et cette partie fonctionne très bien. Mais je peux avoir besoin d'ajouter des optgroups similaires, avec plus de données, et je veux vérifier l'existence de ce optgroup, et s'il existe, ne l'ajoutez pas, mais ajoutez simplement des options au optgroup existant.Vérifiez si optgroup par id/label existe dans jquery?

J'ai cherché dans les environs, et je n'arrive pas à trouver de l'aide pour choisir un optgroup.

Mon menu déroulant existant a l'id de « user_search_select » et les valeurs optgroup possibles pourrait être comme « dept_name » ou « LOC_NAME » ou « last_name »

Donc, après avoir ajouter plus de données, je puis vouloir trier le options dans chaque optgroup, est-ce possible et comment?

Merci!

Répondre

6

Vérifiez this out. Bien que je ne l'ai pas essayé, on dirait qu'il pourrait faire le travail de tri.

À propos de la vérification de l'existence. Fondamentalement, vous pouvez vérifier avec:

<script type="text/javascript"> 
    $(document).ready(function() { 
     if($('#mySelect optgroup[label=New group]').html() == null){ 
      $('#mySelect').append('<optgroup label="New group"></optgroup>'); 
      $('#mySelect optgroup[label=New group]').append('<option value="1">New element</option>'); 
     } else { 
      $('#mySelect optgroup[label=New group]').append('<option value="1">New element</option>'); 
     } 
    }); 
</script> 

Dans le script le cas vérifier si des optgroup avec l'étiquette Nouveau groupe, s'il n'y a pas un tel groupe - ajouter le nouveau groupe, puis ajoutez l'option dans ce groupe. La partie else, ajoutez simplement l'option dans le nouveau groupe existant.

Ensuite, vous devez appliquer le tri avec le plugin.

+1

La meilleure façon de tester l'existence d'un élément est d'utiliser la propriété 'longueur'. 'if ($ ('# quelquechose'). length) {/ * il existe * /} else {/ * n'existe pas * /}' – Matchu

+0

Oui, c'est correct! J'ai eu des problèmes pendant que j'ai testé cette solution (une faute de frappe) et j'ai essayé avec html() et puis j'ai oublié de changer :) –

+0

Puis-je facilement enlever les enfants d'un optgroup nommé? – crosenblum

Questions connexes