2012-10-23 1 views
10

Ho un menu a discesa con diversi gruppi di opzioni. Se qualcuno seleziona un'opzione, come posso verificare a quale gruppo optop appartiene? Ad esempio, se sono stati selezionati "ferrari", in che modo stabiliresti a quale optgroup appartiene?jQuery: trovare <optgroup> per un valore selezionato in un elemento <select>

Sentiti libero di usare jQuery o javascript non elaborato.

<select name="testSelect"> 
    <optgroup label="fruits"> 
     <option value="apples">Apples</option> 
     <option value="oranges">Oranges</option> 
     <option value="pears">Pears</option> 
    </optgroup> 
    <optgroup label="cars"> 
     <option value="ford">ford</option> 
     <option value="toyota">toyota</option> 
     <option value="ferrari">ferrari</option> 
    </optgroup> 
</select> 
+3

Attendere. Questo può essere banale come trovare il genitore dell'elemento selezionato. –

risposta

27

È possibile farlo utilizzando jQuery:

$('select').change(function() { 
    var selected = $(':selected', this); 
    alert(selected.closest('optgroup').attr('label')); 
});​ 

Consulta l'esempio vivo qui: http://jsfiddle.net/jkeyes/zjLCp/1/

Aggiornamento: Sì, si potrebbe utilizzare parenthttp://jsfiddle.net/jkeyes/zjLCp/2/

selected.parent() 
+0

strano vedere che l'evento .click non è disponibile in jquery per questo elemento .. !! –

12

Bene , in js puro:

this.options[this.selectedIndex].parentNode.label 

Non una singola chiamata di funzione e meno codice da avviare. :-)

+0

this.selectedOptions [0] .parentNode.label – lokeshjain2008

+1

@ lokeshjain2008-Suppongo che l'OP desideri un metodo affidabile, non qualcosa [parzialmente supportato in un paio di browser] (http://stackoverflow.com/questions/10711767/is- selectedoptions-rotto-o). – RobG

+0

grazie per il link. – lokeshjain2008