如何在JQuery中使用动态值填充<select>元素?

时间:2018-01-28 18:55:51

标签: javascript jquery

我有5个具有相同类的选择元素。     &lt; select class =“form-control rating”&gt;&lt; / select&gt;     &lt; select class =“form-control rating”&gt;&lt; / select&gt;     &lt; select class =“form-control rating”&gt;&lt; / select&gt;     &lt; select class =“form-control rating”&gt;&lt; / select&gt;     &lt; select class =“form-control rating”&gt;&lt; / select&gt; 我想用jQuery用动态评级值填充它们。 喜欢:rateArr = [5,2,2,3,5] 我真正想要的是这样的:     &lt; select class =“form-control rating”&gt;          &lt; option value =“1”&gt; 1&lt; / option&gt;          &lt; option value =“2”&gt; 2&lt; / option&gt;          &lt; option value =“3”&gt; 3&lt; / option&gt;          &lt; option value =“4”&gt; 4&lt; / option&gt;          &lt; option value =“5”&gt; 5&lt; / option&gt;     &LT; /选择&GT;     &lt; select class =“form-control rating”&gt;          &lt; option value =“1”&gt; 1&lt; / option&gt;          &lt; option value =“2”&gt; 2&lt; / option&gt;     &LT; /选择&GT;     &lt; select class =“form-control rating”&gt;          &lt; option value =“1”&gt; 1&lt; / option&gt;          &lt; option value =“2”&gt; 2&lt; / option&gt;     &LT; /选择&GT;     &lt; select class =“form-control rating”&gt;          &lt; option value =“1”&gt; 1&lt; / option&gt;          &lt; option value =“2”&gt; 2&lt; / option&gt;          &lt; option value =“3”&gt; 3&lt; / option&gt;     &LT; /选择&GT;     &lt; select class =“form-control rating”&gt;          &lt; option value =“1”&gt; 1&lt; / option&gt;          &lt; option value =“2”&gt; 2&lt; / option&gt;          &lt; option value =“3”&gt; 3&lt; / option&gt;          &lt; option value =“4”&gt; 4&lt; / option&gt;          &lt; option value =“5”&gt; 5&lt; / option&gt;     &LT; /选择&GT; 但无法解决如何解决问题的方法。到目前为止我在尝试: $( '等级')。每个(函数(指数,行){     for(i = 1; i&lt; = rateArr [index]; i ++){          $(本).append($( “&LT;选项&LT; /选项&gt;” 中)文本(ⅰ).VAL(I));     } });

2 个答案:

答案 0 :(得分:1)

$("<option</option>")中的html格式不正确。开始标记缺少>

尝试

var rateArr=[5,2,2,3,5]

$('.rating').each(function(index,row){ 
    for(var i=1; i<= rateArr[index]; i++){
         $(this).append($("<option>").text(i).val(i));
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control rating"></select>
<select class="form-control rating"></select>
<select class="form-control rating"></select>
<select class="form-control rating"></select>
<select class="form-control rating"></select>

答案 1 :(得分:1)

@charlietfl的回答是正确的,但是,我想添加一种方法在Web应用的不同部分重用该代码。

<强> JQuery plugin

// You can create a js file called jquery.populate.options.js to store this plugin.

(function($) {
  $.fn.extend({
    populateOpts: function(options) {
      var defaults = {
        source: [],
      };

      var options = $.extend(defaults, options);

      return this.each(function(index, row) {
        if (options.source && options.source.length > 0) {
          for (var i = 1; i <= options.source[index]; i++) {
            $(this).append($("<option>").text(i).val(i));
          }
        }
      });
    }
  });
})(jQuery);

// Now you can do the following
$('.rating').populateOpts({ source: [5, 2, 2, 3, 5] });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control rating"></select>
<select class="form-control rating"></select>
<select class="form-control rating"></select>
<select class="form-control rating"></select>
<select class="form-control rating"></select>

参见?,只需拨打此电话$('.rating').populateOpts({...})即可填写选项。现在,您可以在Web应用程序的任何部分使用该插件。

<强>解释

  • 此插件的名称为populateOpts,因此,您可以使用JQuery的强大功能来选择您在Web应用中常用的元素,并调用您的插件将您的特定行为应用于选定的元素。

  • 您的插件通过选项source接收数组,如下所示:{ source: [5, 2, 2, 3, 5] }。如果您未传递source选项,则此插件不会填充任何选定的元素。

要在HTML文件中启用插件,只需在script标记中添加head标记,如下所示:

<script src="(your path)/jquery.populate.options.js"></script>

该行必须位于jQuery导入的script标记之后。

资源