如何获取所有optgroup选项值并将它们推送到数组?

时间:2015-11-13 10:30:58

标签: javascript jquery html

我的下拉列表中包含2个optgroup(Fiddle)。我现在要做的是,我想获取Around The World Kitchens optgroup中的所有选项值,并将每个值都推送到数组中。

我使用$('#daily_order_kitchen_id optgroup option')定位元素,但它不适用于我。

这是我期待的结果:

["11", "12", "13", "14", "15"]

HTML:

<select id="daily_order_kitchen_id" class="form-control">
    <optgroup label="Default Kitchen">
        <option selected="selected" value="8">Ondricka LLC</option>
    </optgroup>
    <optgroup label="Around The World Kitchens">
        <option value="11">Erdman and Sons</option>
        <option value="12">Franecki, Ryan and Homenick</option>
        <option value="13">Jacobi-Sawayn</option>
        <option value="14">Toy, Hane and Zboncak</option>
        <option value="15">Bauch, Dach and Kihn</option>
    </optgroup>
</select>

JS:

var selectedKitchen = $("#daily_order_kitchen_id option:selected").val();
var arr = [];
$('#daily_order_kitchen_id optgroup option').each(function () {
    arr.push($(this).val())
});
console.log(selectedKitchen);
console.log(arr);

我该怎么办?

2 个答案:

答案 0 :(得分:1)

好吧,select有两个optgourp一个Default Kitchen,另一个Around The World Kitchens

如果您仅在optgourp上运行选择器,则会考虑这两个群组。

如果你想从Around The World Kitchens获得价值,你特别提到它

喜欢这个

optgroup[label="Around The World Kitchens"]

这将尝试查找标签为Around The World Kitchens

的optgroup

试试这个

$('#daily_order_kitchen_id optgroup[label="Around The World Kitchens"] option').each(function () {
    arr.push($(this).val())
});

<强> JSFIDDLE

答案 1 :(得分:0)

编辑:尝试此代码。

 var selectedKitchen = $("#daily_order_kitchen_id option:selected").val();
    var arr = [];
    $('#daily_order_kitchen_id option').each(function () {
        if($(this).parent().attr('label') != 'Around The World Kitchens') {
                arr.push($(this).val());    
        }       
    });
    console.log(selectedKitchen);
    console.log(arr);