如何将选择选项推送到对象数组中

时间:2016-12-16 12:58:23

标签: javascript jquery node.js

如何将select options推送到array的{​​{1}},以便它构成一个objects

我试过这个

select box

我的问题:如何推送所有 <select name="fruit"> <option selected="true" value="apple">apple</option> <option value="banana">banana</option> <option value="kela">kela</option> </select> var fruits = []; $('#fruits').find('select').each(function(){ fruits.push({ selectName: $(this).attr('name'), optionValue: $(this).attr('value') }); }); console.log(fruits); 值,以便我可以获得一个options?我的意思是select box必须属于单个array object

select
var fruits = [];
$('#fruits').find('select').each(function(){
   fruits.push({
     selectName: $(this).attr('name'),
     optionValue: [] // i want all the options values to be contained either in array or any other way
   
   });
});

console.log(fruits);

3 个答案:

答案 0 :(得分:2)

我知道两种方法,如何做到这一点

var fruits = [];
$('#fruits').find('select').children().each(function(){
   fruits.push({
     selectName: $(this).parent().attr('name'),
     optionValue: $(this).attr('value') // all the options value

   });
});
console.log(fruits);

/*var fruits = [];
$('#fruits').find('select').children().each(function(){
   fruits.push({
     selectName: $(this).parent().attr('name'),
     optionValue: $(this).attr('value') // all the options value

   });
});
console.log(fruits);*/

var select = {};
$('#fruits').find('select').each(function(){
  var propName = $(this).attr('name');
  select[propName] = [];
  $(this).children().each(function(){
    select[propName].push({
     selectName: $(this).text(),
     optionValue: $(this).attr('value') // all the options value
     });
   });
});

console.log(select);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div id="fruits">
 <select name="fruit"><option selected="true" value="apple">apple</option><option value="banana">banana</option><option value="kela">kela</option></select>
  <select name="vegetable"><option selected="true" value="potato">potato</option><option value="tomato">tomato</option><option value="cabbage">cabbage</option></select>
 </div>

答案 1 :(得分:1)

不要忘记<select>元素也可以包含<optgroup>个子元素。我为你创造了一个小小提琴:https://jsfiddle.net/8xboz1gn/

我已经创建了一个可以传递jQuery元素的方法。它会查找其中的所有<option>个项目,并使用键,值对(或id,我的案例中的文本:P)构建一个数组:

function getOptions($elem)
{
    var items = [];
    var $options =  $elem.find('option');

    $options.each(function() {
        var $option = $(this);
        items.push({
            'id': $option.val(),
            'text': $option.text()
        });
    });
    return items;
}

希望它有所帮助!

答案 2 :(得分:0)

var fruits = [];
$('#fruits').find('select').children().each(function(){
   fruits.push({
     optionValue: $(this).attr('value')
   
   });
});

console.log(fruits);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div id="fruits">
 <select name="fruit"><option selected="true" value="apple">apple</option><option value="banana">banana</option><option value="kela">kela</option></select>
 </div>