2014-05-15 90 views
1

http://jsfiddle.net/5m86J/6/通过对象

returnLOB =[ 
    { 
     id: 1, 
     name:"CIB" 
    }, 
    { 
     id: 2, 
     name:"GTI" 
    } 
] 

以上的数组循环填充下拉是objects.I阵列需要填充下面下拉与来自阵列选项。

<div id="LOBSelect" class="clearfix displayOnCreate"> 
    <span class="label">Dropdown</span> 
    <select name="lob-select" class="dk" id="lobSelect"></select> 
</div> 

下面的循环仅产生具有选项形式对象[GTI]不是第一个下拉。 任何人都可以告诉我这里有什么问题。

for (var j = 0; j < returnLOB.length; j++){ 
    $('#LOBSelect').find('select[name="lob-select"]').html($('<option/>', { 
     value: returnLOB[j].name, 
     text: returnLOB[j].name, 
     id: returnLOB[j].id 
    })); 
} 
+0

http://jsfiddle.net/satpalsingh/bX8nK/ – Satpal

+2

不知道为什么这是downvoted? OP显示了代码,对问题的一个很好的解释,提供了一个小提琴并展示了他们自己做出的努力。你还想要什么呢? –

+0

在你的循环中,你每次都(重新)设置html。您需要创建一个选项,然后将其附加到选择 –

回答

3

需要使用.append()代替.html()

插入内容,由参数指定的,所述集合中匹配的元素中的每个元素的结束。

代码

$('#LOBSelect').find('select[name="lob-select"]').append($('<option/>', { 
    value: returnLOB[j].name, 
    text: returnLOB[j].name, 
    id: returnLOB[j].id 
})); 

DEMO

+0

你刚刚改进了我对'append'的使用。谢谢。 –

1

演示:http://jsfiddle.net/lotusgodkk/5m86J/7/

for (var j = 0; j < returnLOB.length; j++){ 
    $('#LOBSelect').find('select[name="lob-select"]').append($('<option/>', { 
     value: returnLOB[j].name, 
     text: returnLOB[j].name, 
     id: returnLOB[j].id 
    })); 
} 
-1

试试这个:

for (var i = 0; i < returnLOB .length; i++) { 
       $("#lobSelect").append("<option id='"+returnLOB [i].Name+"' value='" + returnLOB [i].Name+ "'>" + result.results[i].Name + "</option>"); 
      } 
+0

这可能是“容易出错”方面最差的方法。 –

1

这可以做这样的:http://jsfiddle.net/bX8nK/3/

var returnLOB = [{ 
    id: 1, 
    name: "CIB" 
}, { 
    id: 2, 
    name: "GTI" 
} 

] 

$(returnLOB).each(function() { 
    var lob = this; 
    $('#LOBSelect select[name=lob-select]').append(
     $('<option/>', { 
      value: lob.name, 
      text: lob.name, 
      id: lob.id 
     }) 
    ); 
}); 

其被选择后直接调用的.find()方法,可以通过延伸选择器本身进行更有效的/可读的。

+0

非常感谢!像魅力一样工作 – Spdexter