jQuery: find the <optgroup> for a selected value in a <select> element

html, html-select, javascript, jquery

Solution

You can do this using jQuery:

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

See a live example here: http://jsfiddle.net/jkeyes/zjLCp/1/

Update: Yes you could use `parent` http://jsfiddle.net/jkeyes/zjLCp/2/

alert(selected.parent().attr('label'));

Problem

I have a dropdown menu with different option groups. If someone selects an option, how can I check which optgroup it belongs to? For example if 'ferrari' were selected, how would you determine which optgroup it belongs to? Feel free to use jQuery or raw 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> ```

Original source

Related problems