#javascript #jquery #select
#javascript #jquery #выберите
Вопрос:
Есть ли способ получить массив всех выбранных значений внутри div с определенным именем класса при наличии более чем одного div с одинаковым именем класса?
<div class="mydiv">
<select name="first">
<option value="1">One</option>
<option value="2">Two</option>
</select>
<select name="second" ">
<option value="1">One</option>
<option value="2">Two</option>
</select> </div>
<div class="mydiv">
<select name="first">
<option value="1">One</option>
<option value="2">Two</option>
</select>
<select name="second" ">
<option value="1">One</option>
<option value="2">Two</option>
</select> </div>
Если я сделаю это: $(".mydiv").each(function (){ });
Я буду выполнять цикл (всего дважды, поскольку у меня есть два раздела с классом mydiv) через оба раздела, чего я и хочу. Теперь я хотел бы получить выбранные значения в каждом div для каждого выбора (первого и второго).
Ответ №1:
Вы можете использовать map()
.
Далее предполагается, что вам нужен подмассив для каждого <div>
let res = $('.mydiv').map(function(){
return [$(this).find('select').map(function(){
return $(this).val()
}).get()]
}).get()
console.log(res)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mydiv">
<select name="first">
<option value="1" selected>One</option>
<option value="2">Two</option>
</select>
<select name="second">
<option value="1">One</option>
<option value="2" selected>Two</option>
</select>
</div>
<div class="mydiv">
<select name="first">
<option value="1">One</option>
<option value="2" selected>Two</option>
</select>
<select name="second">
<option value="1">One</option>
<option value="2" selected>Two</option>
</select>
</div>
Для плоского массива просто выполните :
let res = $('.mydiv select').map(function(){
return $(this).val();
}).get();
Комментарии:
1. Это именно то, чего я хотел достичь. Спасибо 🙂