我有一个选择框。
<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() ) });
在萤火虫中,它给出了这个错误:
缺少}属性列表
之后
但我没有看到任何遗漏}
。我在这里做错了什么?
答案 0 :(得分:12)
你需要遍历select中的每个option
元素,而不仅仅是select本身,同样,在jQuery中获取输入值的正确方法是val()
,试试这个:< / p>
myList = [];
$('#x option').each(function() {
myList.push($(this).val())
});
您还可以使用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}}元素。