1

这是我所拥有的:

for (i = 0; i < data.length; i++) {
                $("#myDropDownLisTId").find('tbody')  
                .append($('<option>').attr('value', data[i].id).attr('name', data[i].name)
                );               
            }

但下拉列表始终保持不变。为什么这不起作用?数据变量具有漂亮的值。另外,我想在for循环之前清空下拉列表/怎么做?

这是我在视图中的下拉列表:

<%= Html.DropDownList("myDropDownLisTId")%>
4

4 回答 4

5

尽管其他答案将完成您希望做的事情,但我建议您将选项 HTML 写入字符串变量并在循环完成后附加它,而不是在循环中附加。当您的列表变长时,这可能会带来一些明显的性能优势。Using.html()还将负责每次清空列表。

        var tempList = '';
        for (i = 0; i < data.length; i++) {  
            tempList += '<option value="' + data[i].id + '" name="' + data[i].name +'">' + data[i].text + '</option>';            
        }
        $("#myDropDownLisTId").html(tempList);
于 2012-04-09T18:23:29.797 回答
2

试试这个。

$.each(data, function() {
   $("#myDropDownLisTId").append($("<option />").val(this.id).text(this.Text));
 });

查看我的这个答案以获取有关如何从 MVC 操作获取数据以加载下拉列表的更多详细信息

编辑:根据评论删除现有数据

$("#myDropDownLisTId").empty()
$.each(data, function() {
   $("#myDropDownLisTId").append($("<option />").val(this.id).text(this.Text));
 });

编辑 2:  Idrumsgood的回答有一个很好的观点。而不是每次在循环内调用 append 方法,只需将值保存在变量中并仅调用 html 方法一次。

http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly

var items=""
$.each(data, function() {
   items+="<option value='" + this.id + "'>" + this.Text + "</option>";
 });
$("#myDropDownLisTId").html(items);
于 2012-04-09T18:11:23.507 回答
1

这似乎有效:http: //jsfiddle.net/ykFJd/2/

JS

var data = [
    {id:'0', name:'test 0'},  
    {id:'1', name:'test 1'},
    {id:'2', name:'test 2'},
    {id:'3', name:'test 3'},
    {id:'4', name:'test 4'},    
];


for (var i = 0; i < data.length; i++) {
    $("#myDropDownLisTId").append(
        $('<option />', {
            'value': data[i].id,
            'name': data[i].name,
            'text': data[i].name
        })
    );               
}​
于 2012-04-09T18:16:02.293 回答
0

我编写了一个很好的函数来将 js 哈希绑定到选择列表。在使用 JQuery / Json 填充选择列表的最佳方式中查看我的答案?

示例用法:

// you can easily pass in response.d from an AJAX call if it's JSON formatted
var users = [ {id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Cindy'} ]
setSelectOptions($('#selectList'), users, 'id', 'name');
于 2012-04-09T18:19:03.547 回答