12

我正在使用带有组合在一起的选项的多选。

<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?

4

3 回答 3

16

试试这个

$(this).find("option:selected").each(function(){
    $(this).parent().attr("label");
});
于 2010-12-08T12:09:32.663 回答
4

这可能有点晚了,但我刚刚完成了这个问题的工作,这似乎是我找到的最优雅的解决方案:

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

这是针对这个特定示例修改的小提琴(使用类属性而不是标签属性):http: //jsfiddle.net/pNjsj/

希望对某人有所帮助:)

于 2012-02-07T23:14:34.033 回答
3

尝试.each()

$(this).find("option:selected").each(function(){
    alert($(this).parent().attr("label"));
});
于 2010-12-08T12:12:54.783 回答