Как получить optgroup для множественного выбора в jQuery? - PullRequest
11 голосов
/ 08 декабря 2010

Я использую множественный выбор с параметрами, сгруппированными вместе.

<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 и Pear, optgroup«.fruit» будет возвращено в обеих учетных записях.

Используя jQuery, как мне получить optgroup для каждой выбранной опции?

Ответы [ 3 ]

16 голосов
/ 08 декабря 2010

Попробуйте это

$(this).find("option:selected").each(function(){
    $(this).parent().attr("label");
});
4 голосов
/ 08 февраля 2012

Это может быть немного поздно, но я только что закончил работу над этой проблемой, и это, кажется, самое элегантное решение, которое я нашел:

$("#fruits option").filter(":selected").parent("optgroup").attr("label");

Вот модификация, модифицированная для этого конкретного примера (с использованием атрибута class, а не атрибута label): http://jsfiddle.net/pNjsj/

Надеюсь, что кому-то поможет :)

3 голосов
/ 08 декабря 2010

Попробуйте с .each()

$(this).find("option:selected").each(function(){
    alert($(this).parent().attr("label"));
});
...