0

第一个代码块是我希望变量 select 执行的工作示例。var Select 在变量 tr 中有一个 td。变量 tr 在此代码中使用了 2 次。当表有 html 时,一次追加 tr,而当表没有任何 html 时追加 tr。原因是因为如果没有 html 它应该附加标题和带有 select 元素的行以及应该在该行上的其余数据如果确实有 html 它应该只附加该行以防止重复标题。所以我想要一个名为 tr 的漂亮干净变量,每次用户调用它时都会附加它。jsfile如果您单击下拉菜单,则可以选择该项目,然后将出现新行。

      $('#autocomplete').autocomplete({
         lookup: currencies,
        onSelect: function (suggestion) {
        var thehtml = '<strong>Item:</strong> ' + suggestion.value + ' <br>      <strong>price:</strong> ' + suggestion.data + "<br>" + suggestion.divs;
        var tableheader = ($("<thead>")
            .append($("<tr>")
                .append($("<th>Item</th><th>Qty</th><th>Price</th>")))
            )
      var select = " <select class = 'select'><option value='volvo>Volvo</option> <option value='saab'>Saab</option>  <option value='mercedes'>Mercedes</option> <option value='audi'>Audi</option> </select>"
  var tr = "<tr><td>"+ suggestion.value + "</td><td>" +select +"</td></tr>"

 if($(".table").html().length <= 0)
 {
    $('.table').append($("<table>")).append(tableheader).append(tr);
}else{
    if($(".table").html().length > 0){
        $(".table").append(tr)
    }

}

问题是我希望动态组成选择元素,所以我尝试了一些东西,但我不知道为什么它不起作用。它没有收到变量。我是否使用 $.each 实现了变量错误?

  $('#autocomplete').autocomplete({
lookup: currencies,
onSelect: function (suggestion) {
  var thehtml = '<strong>Item:</strong> ' + suggestion.value + ' <br> <strong>price:</strong> ' + suggestion.data + "<br>" + suggestion.divs;
  var tableheader = ($("<thead>")
            .append($("<tr>")
                .append($("<th>Item</th><th>Qty</th><th>Price</th>")))
            )

var  selectValues = { "3": "2", "2": "1" , "1": "..."};

 var select =  $.each(selectValues, function(key, value){
        $('.select').append($('<option>', {value: value}).text(value));
        // <option value='volvo>Volvo</option>
    });

  var tr = "<tr><td>"+ suggestion.value + "</td><td><select class ='select'>" + select + "</select></td></tr>";



 if($(".table").html().length <= 0)
 {
    $('.table').append($("<table>")).append(tableheader).append(tr);
}else{
    if($(".table").html().length > 0){
        $(".table").append(tr)
    }

}


},
maxHeight:100,
width:600

});

感谢您的帮助

4

1 回答 1

2

如果只使用值,为什么要使用对象?如果你真的不需要 key juste 创建一个数组:

var  selectValues = ["2", "1", "..."];
var value;

var select =  selectValues.forEach(function(value){
    $('.select').append($('<option>', {value: value}).text(value));
    // <option value='volvo>Volvo</option>
});
// or if you want more compatibility
for (var i = 0, len = selectValue.length; i < len; i++) {
    value = selectValue[i];
    $('.select').append($('<option>', {value: value}).text(value));
});

编辑:对不起,我犯了一些错误。first forEach 不会返回任何内容,因此无法正常工作。我用你的小提琴测试。试试这个(如果你不想使用地图,请用旧的 for 循环替换)。

var select =  selectValues.map(function(value){
    return "<option value=" + value + ">"  + value + "</option>";
    // <option value='volvo>Volvo</option>
}).join('');

首先,您不必从 $('.select') 追加,因为此时此 dom 不存在,并且您无法将数组连接到这样的字符串中。

于 2013-09-27T12:13:43.987 回答