Ответ 1
Попробуйте это
$(this).find("option:selected").each(function(){
$(this).parent().attr("label");
});
Я использую multiselect с параметрами, сгруппированными вместе.
<select title="Fruits" multiple="multiple" id="fruits" name="fruits[]">
<option selected="selected" label="All" value="">All</option>
<optgroup label="" class="fruit">
<option label="apple" value="1">Apple</option>
<option label="pear" value="2">Pear</option>
<option label="orange" value="3">Orange</option>
</optgroup>
<optgroup label="" class="berries">
<option label="strawberry" value="4">Strawberry</option>
<option label="raspberry" value="5">Raspberry</option>
<option label="blueberry" value="6">Blueberry</option>
</optgroup>
</select>
Я пробовал $(this).find("option:selected").parent().attr("label")
, который возвращает только optgroup из первой выбранной опции, то есть, если выбраны Strawberry and Pear, optgroup '.fruit' будет возвращен в обеих учетных записях.
Используя jQuery, как мне получить optgroup для каждой выбранной опции?
Попробуйте это
$(this).find("option:selected").each(function(){
$(this).parent().attr("label");
});
Это может быть немного поздно, но я только что закончил работу над этой проблемой, и это, кажется, самое изящное решение, которое я нашел:
$("#fruits option").filter(":selected").parent("optgroup").attr("label");
Ниже приведен скрипт, модифицированный для этого конкретного примера (с использованием атрибута class, а не атрибута метки): http://jsfiddle.net/pNjsj/
Надеюсь, что это поможет кому-то:)
Попробуйте с .each()
$(this).find("option:selected").each(function(){
alert($(this).parent().attr("label"));
});