数组数组中选择器的 Jquery 组结果



>我的网页上有随机数量的select multiple,当用户单击发送按钮时,我通过其class检索这些select multiple的值。我也使用所选的插件,但我认为它不会干扰我将要暴露的问题。这是我的代码的样子:

<select multiple="multiple" id="idName0" class="idName chosenSelect">
<option value="...">...</option>...
</select>
<select multiple="multiple" id="idName1" class="idName chosenSelect">
<option value="...">...</option>...
</select>

并得到结果:

results.push($(".idName").map(function(){return $(this).val();}).get());

假设我在第一个select(带有valuefoo 和 bar(中选择了 2 个option,在第二个(带有valuefoobar(中选择了 1 个。所有这些都给了我一个看起来像array

[foo,bar,foobar]

我想要的是:

[[foo,bar],[foobar]]

据我所知,当你在指向select multiple的选择器上调用 .val(( 时,会给你一个带有不同选定option的数组。在这里,由于有多个select multiple在争夺中,我希望创建这些数组的数组。

欢迎任何帮助。

您可以使用map(),但您还需要将每个select的值包装在数组中。如果您不希望数组中的null用于空选择,您可以在.get()后添加.filter(Boolean)

$('select').change(function() {
var data = $("select").map(function() {
return [$(this).val()]
}).get()
console.log(data)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple="multiple" id="idName0" class="idName chosenSelect">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select multiple="multiple" id="idName1" class="idName chosenSelect">
<option value="4">4</option>
</select>

最新更新