如何使用所选选项动态创建选择

时间:2015-04-21 10:44:24

标签: javascript jquery html

我正在动态制作select tag,我想制作third option selected

var dropDownList = $('<select />', {
  'id': 'my id',                 // some id i want to apply
  'class': 'my class',           //some class i want to aply
  });  
for (iLoop = 0; iLoop < myarray.length ; ++iLoop) {
  if(iLoop ==2){
    $('<option />', {
      'value': myarray[iLoop ].value,
      'text':  myarray[iLoop ].text,
      'selected': ??      // true/false
    }).appendTo(dropDownList);
  }
  else{
    $('<option />', {
      'value': myarray[iLoop ].value,
      'text':  myarray[iLoop ].text,
    }).appendTo(dropDownList);
  }
}  

旁边我不想这样做

var selectElement='<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel" selected>Opel</option>
  <option value="audi">Audi</option>
</select>';

2 个答案:

答案 0 :(得分:2)

使用属性selected,如此

for (iLoop = 0; iLoop < myarray.length ; ++iLoop) {
    $('<option />', {
        'value': myarray[iLoop ].value,
        'text':  myarray[iLoop ].text,
        'selected': (iLoop == 2 ? true : false)
    }).appendTo(dropDownList);
}  

Example

答案 1 :(得分:0)

for (iLoop = 0; iLoop < myarray.length ; ++iLoop)

如果您正在编写for循环,请不要计算循环内的数组长度。最好使用如下

var myarrayLength = myarray.length;
for (iLoop = 0; iLoop < myarrayLength ; ++iLoop)

不要比较如下。如果数组大小为n,则此比较将发生n次

'selected': (iLoop == 2 ? true : false)

使用in for循环代替for循环更好。

for (iLoop in myarray) {
    $('<option />', { 'value': myarray[iLoop ].value,
                      'text':  myarray[iLoop ].text,
                     }).appendTo(dropDownList);
}  

$("#time_entry_activity_id option:eq(3)").attr('selected', 'selected');