如果你在控制台上看到有一个带有value参数数组的对象obj,但name参数只有一个值。 我想存储选项的第二个属性 - " name"与存储值参数值的方式相同(在数组中,不仅是单个选项名称,还包括所有选定选项的所有名称)。
//jQuery onchange()
var obj = {};
//get the value of option value.
$('select[name=sensors]').on('change', function(){
var value = $('select[name=sensors]').val();
obj['value'] = value;
$('#demo').text(value);
//get the value of option name.
var name = $('option:selected').attr('name');
obj['name'] = name;
$('#demo2').text(name);
console.log(obj); // returns array if value but single value of name parameter.
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select type='list' name='sensors' multiple>
<optgroup label = 'sensors'>
<option value= "e11" name = 'Electricity'>Electricity</option>
<option value= "e12" name = 'Wind'>Wind</option>
<option value= "e13" name = 'Temperature'>Temperature</option>
</optgroup>
</select>
<!--jQuery onclick()-->
<div id="demo"></div>
<!--jQuery select()-->
<div id="demo2"></div>
&#13;
如果选择&#34; obj&#34;的多个选项值参数。 object存储所选选项值的数组。但是在name参数中只存储一个值。
答案 0 :(得分:1)
这是jQuery网站的引用,这就是为什么attr只返回集合中的第一个名字的原因。
.attr()方法仅获取第一个元素的属性值 在匹配的集合中。要单独获取每个元素的值, 使用循环结构,如jQuery的.each()或.map()方法。
//jQuery onchange()
var obj = {};
//get the value of option value.
$('select[name=sensors]').on('change', function(){
var value = $('select[name=sensors]').val();
obj['value'] = value;
$('#demo').text(value);
//get the value of option name.
var name = $('option:selected').map(function(i, el){
return el.getAttribute("name");
}).get();
obj['name'] = name;
$('#demo2').text(name);
console.log(obj); // returns array if value but single value of name parameter.
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select type='list' name='sensors' multiple>
<optgroup label = 'sensors'>
<option value= "e11" name = 'Electricity'>Electricity</option>
<option value= "e12" name = 'Wind'>Wind</option>
<option value= "e13" name = 'Temperature'>Temperature</option>
</optgroup>
</select>
<!--jQuery onclick()-->
<div id="demo"></div>
<!--jQuery select()-->
<div id="demo2"></div>