jQuery - 以[array]方式

时间:2015-12-09 13:15:52

标签: jquery

如何更改< select>框<选项>值动态到新列表? 比方说,我有如下选择框: < select class =“form-control selectOptions”>   < option>默认选项1< / option>   <选择的选项>默认选项2< /选项>   < option>默认选项3< / option> < /选择> 以上选项值必须替换为: < select class =“form-control selectOptions”>   < option>新选项1< / option>   < option>新选项2< / option>   < option>新选项3< / option>   <选择的选项>新选项4< /选项>   < option>新选项5< / option> < /选择> 我试过下面的代码:  $(文件)。就绪(函数(){    var selectBox = $(“select.selectOptions”);    selectBox.empty();    $(“< option value ='new_option_1'> New Option 1< / option>”)。appendTo(selectBox);    $(“< option value ='new_option_2'> New Option 2< / option>”)。appendTo(selectBox);    $(“< option value ='new_option_3'> New Option 3< / option>”)。appendTo(selectBox);    $(“< option value ='new_option_4'> New Option 4< / option>”)。appendTo(selectBox);    $(“< option value ='new_option_5'> New Option 5< / option>”)。appendTo(selectBox);    $(“select.selectOptions option:eq(3)”)。attr(“selected”,“selected”);  }); 但如果我有更多的选择,就很难改变。 那么,我怎样才能创建如下的数组...... 并且<选项>值也应该是动态的。例如:对于新选项4,值应为new_option_4 var myNewOptions = [   新选项1,   新选项2,   新选项3,   新选项4,   新选项5 ] ...   在线演示

2 个答案:

答案 0 :(得分:1)

您可以使用此函数动态生成选项,方法是将选项数量传递给generate,选择器以放置所选选项的选项和索引:



var ns = {
  genOpts: function(num, sel, selOpt) {
    $(sel).empty();
    for (var i = 0; i < num; i++) {
      $('<option>', {
        text: 'New Option ' + i,
        value: 'new_option_' + i
      }).appendTo(sel);
    }
    $(sel).find('option').eq(selOpt).attr('selected', 'selected');
  }
};

ns.genOpts(5, ".selectOptions", 3);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control selectOptions">
  <option>Default Option 1</option>
  <option selected>Default Option 2</option>
  <option>Default Option 3</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

尝试使用$.map()String.prototype.toLowerCase()String.prototype.replace()RegExp /\s/g匹配myNewOptions数组中的字词之间的空格字符,{{1 },.outerHTML;创建变量.append()以将第四个selected已创建的属性option设置为selected

&#13;
&#13;
true
&#13;
var myNewOptions = [
    "New Option 1",
    "New Option 2",
    "New Option 3",
    "New Option 4",
    "New Option 5"
  ],
  selected = 3;

var options = $.map(myNewOptions, function(opts, index) {
  return $("<option>", {
    value: opts.toLowerCase().replace(/\s/g, "_"),
    html: opts,
    selected: index === selected ? true : false
  })[0].outerHTML
});

$(".form-control").empty().append(options);
&#13;
&#13;
&#13;