如何存储所选选项的名称属性

时间:2015-08-17 15:28:46

标签: javascript jquery

如果你在控制台上看到有一个带有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;
&#13;
&#13; 说明:由于选项将value属性设置为native,因此没有选择name属性的方法,因此我使用了attr()方法,但仍然无法弄清楚如何做到这一点。

如果选择&#34; obj&#34;的多个选项值参数。 object存储所选选项值的数组。但是在name参数中只存储一个值。

1 个答案:

答案 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>