2012-10-23 12 views
10

mam menu z różnymi grupami opcji. Jeśli ktoś wybierze opcję, w jaki sposób mogę sprawdzić, do której grupy optycznej należy? Na przykład, jeśli wybrano "ferrari", jak byś określił, do której grupy optycznej należy?jQuery: znaleźć <optgroup> dla wybranej wartości w <select> elementu

Zapraszamy do korzystania z jQuery lub surowego JavaScript.

<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

Czekaj. Może to być tak proste, jak znalezienie elementu macierzystego wybranego elementu. –

Odpowiedz

27

Można to zrobić przy użyciu jQuery:

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

Zobacz na żywo przykład tutaj: http://jsfiddle.net/jkeyes/zjLCp/1/

Aktualizacja: Tak można użyć parenthttp://jsfiddle.net/jkeyes/zjLCp/2/

selected.parent() 
+0

Dziwne, że to zdarzenie .click nie jest dostępne w jquery dla tego elementu .. !! –

12

Dobrze w czystym js:

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

Brak pojedynczego wywołania funkcji i mniej kodu do rozruchu. :-)

+0

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

+1

@ lokeshjain2008-Przypuszczam PO chce niezawodną metodę, a nie coś [częściowo obsługiwany w kilku przeglądarkach] (http://stackoverflow.com/questions/10711767/is- selectedoptions-broken-or). – RobG

+0

dzięki za link. – lokeshjain2008