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

Don P picture Don P · Oct 24, 2012 · Viewed 28.9k times · Source

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>

Answer

John Keyes picture John Keyes · Oct 24, 2012

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/

selected.parent()