Jquery 将选择器的结果分组到数组的数组中
Jquery group result of a selector in an array of array
我的网页上有一个随机数 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
中选择了 2 option
(使用 value
foo 和 bar),在第二个中选择了一个(使用 value
foobar)。所有这些都给我一个 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>
我的网页上有一个随机数 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
中选择了 2 option
(使用 value
foo 和 bar),在第二个中选择了一个(使用 value
foobar)。所有这些都给我一个 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>