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

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));
 });

EDIT 2:   Idrumsgoodの答えには非常に良い点があります。ループ内で毎回 append メソッドを呼び出す代わりに、値を変数内に保持し、html メソッドを 1 回だけ呼び出します。

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 に答える