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>

最初に選択したオプションの optgroup のみを返す方法を試しまし$(this).find("option:selected").parent().attr("label")た。つまり、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 に答える