Как получить все значения параметров optgroup и поместить их в массив?


У меня есть выпадающий список, который содержит 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   2   2015-11-13 13:30:57

2 ответа:

Ну, у select есть два optgourp один - Default Kitchen, а другой - Around The World Kitchens.

Если вы запускаете селектор только на optgourp, он будет учитывать обе группы.

Если вы хотите получить значение от Around The World Kitchens, Вы должны упомянуть его конкретно

Вот так

optgroup[label="Around The World Kitchens"]

Это будет пытаться найти optgroup с меткой Around The World Kitchens

Попробуйте вот так

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

JSFIDDLE

Edit: попробуйте этот код.

 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);