如何动态构建选项列表

时间:2017-10-31 17:10:04

标签: javascript jquery dynamic dropdown

我有一个下拉列表,我需要用jquery填充,因为列表内容会改变。我在这个网站上找到了以下代码的基础。但它被编码为运行一定数量的项目。这是我的jsfiddle。您可以查看按钮是否单击列表内容更改。但是列表是从数据库中读取的,可能有1个项目或100个项目。所以我添加了一个循环来读取列表并将其添加到选项列表中,但无论我尝试了什么都失败了。我的最后一次尝试是here

我的问题是如何改变:

    var options = [ 
        {text: cars[0], value: 1},
        {text: cars[1], value: 2},
        {text: cars[2], value: 3}
        ];      

这样的事情:

    var options '';       
    for (var i = 0; i < cars.length; ++i) {        
       options =  
         {text: cars[i], value: i},
       ;        
     } 
     options = [ + options + ];

以下是我第一个jsfiddle的代码:

    <script> 
    var getlist = function() {

    var cars = ["Saab", "Volvo", "BMW"];

    var options '';       
    for (var i = 0; i < cars.length; ++i) {        
       options =  
         {text: cars[i], value: i},
       ;        
     } 
     options = [ + options + ];


        $("#v_make").replaceOptions(options);
    }         

    $('#button').click(getlist);

    (function($, window) {
      $.fn.replaceOptions = function(options) {
        var self, $option;

        this.empty();
        self = this;

        $.each(options, function(index, option) {
          $option = $("<option></option>")
            .attr("value", option.value)
            .text(option.text);
          self.append($option);
        });
      };
    })(jQuery, window)
    </script>

    <select id="v_make">
    <option>start</option>
    </select>
    <input type="button" id="button" value="Click Me" />

2 个答案:

答案 0 :(得分:1)

您可以通过将cars数组传递给函数来简化选项的构建:

 var getlist = function() {
   var cars = ["Saab", "Volvo", "BMW"];
   $("#v_make").replaceOptions(cars);
 }
 $('#button').click(getlist);

 (function($, window) {
   $.fn.replaceOptions = function(options) {
     var self, $option;

     this.empty();
     self = this;

     $.each(options, function(index, option) {
       $option = $("<option></option>")
         .attr("value", index)
         .text(option);
       self.append($option);
     });
   };
 })(jQuery, window)

更新的JSFiddle是here

答案 1 :(得分:0)

尝试以下

&#13;
&#13;
$(document).ready(function() {

  var x = 0;
  var y = 0;

  $('#addBtn').on('click', function() {
  
    $('<option>').val(x).text(y).appendTo('#select1');

    x++
    y++

  });



})
&#13;
<select id="select1" style="width:100%;">

<option value="0" selected>(Please select an option)</option>
</select>
<button id="addBtn">Add</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
&#13;
&#13;
&#13;