jquery从JSON数组中的选择框中收集所有选项值

时间:2012-02-13 09:24:05

标签: javascript jquery html json

我有一个选择框。

<select id='x'>
    <option value='1'>'Vineet'</option>
    <option value='2'>'Vivek'</option>
    <option value='3'>'Madhu'</option>
</select>

选项会动态添加到它。最后,我想将此选择框中包含的所有选项元素的值收集到一个数组中。我在论坛上搜索了答案,但Q / A仅用于获取“选定”选项。

我试过了:

var myList = [];
$('#x').each(function() { myList.push( $(this).value() ) });

在萤火虫中,它给出了这个错误:

  

缺少}属性列表

之后

但我没有看到任何遗漏}。我在这里做错了什么?

2 个答案:

答案 0 :(得分:12)

你需要遍历select中的每个option元素,而不仅仅是select本身,同样,在jQuery中获取输入值的正确方法是val(),试试这个:< / p>

myList = [];
$('#x option').each(function() {
    myList.push($(this).val())
});

Example fiddle

您还可以使用map()

var myList = $('#x option').map(function() {
    return this.value;
}).get();

在这两种情况下,myList变量都将包含一个字符串数组。

答案 1 :(得分:1)

尝试使用jQuery函数获取元素的值(包装在jQuery对象中)是.val(),而不是.value() - 这可能会导致一些混乱,但我无法确定

作为旁注,您的选择器不符合您的要求。 $('#x')将返回id x的所有元素 - 它们应该只是一个元素 - 然后.each()将迭代这组元素(所以它将调用该函数一次)。您最终会得到一个包含单个值的数组,该值将是<select>输入的当前选定值。

相反,请使用$('#x > option'),该<option>将返回<select>元素的直接子元素与id x的所有{{1}}元素。