页面有两个下拉列表,应该从JSON数组中填充。处理数组时,它包含需要附加到下拉列表的选项元素。此任务被授予jQuery的appendTo方法,但是会导致出现错误:
“TypeError:context is undefined”。
你知道为什么会发生这种情况以及如何解决这个问题吗?
下面提供了源代码,以及jsFiddle。
HTML:
<select id="ddlTypeNew">
<option value="">Select Type To Add</option>
</select>
<select id="ddlTypeEdit">
<option value="">Select Type To Edit</option>
</select>
JavaScript的:
var json = $.parseJSON('[{ "MailTypeId": 1, "MailTypeName": "Register" }, { "MailTypeId": 2, "MailTypeName": "Login" }]');
json = json.map(function (obj) {
return $('<option>', { value: obj.MailTypeId, text: obj.MailTypeName });
});
$(json).slice().appendTo('#ddlTypeEdit');
$(json).appendTo($('#ddlTypeNew'));
答案 0 :(得分:1)
你可以这样做:
var json = $.parseJSON('[{ "MailTypeId": 1, "MailTypeName": "Register" }, { "MailTypeId": 2, "MailTypeName": "Login" }]');
$.each(json,function (index,obj) {
$($('<option/>').val(obj["MailTypeId"]).html(obj["MailTypeName"])).appendTo('#ddlTypeEdit');
$($('<option/>').val(obj["MailTypeId"]).html(obj["MailTypeName"])).appendTo('#ddlTypeNew');
});
答案 1 :(得分:0)
Map
这里实际上返回了一个jQuery option
对象数组。您需要循环遍历数组,然后将它们逐个添加到下拉列表中,如下所示:
var json = $.parseJSON('[{ "MailTypeId": 1, "MailTypeName": "Register" }, { "MailTypeId": 2, "MailTypeName": "Login" }]');
var arr = json.map(function (obj) {
return $('<option>', { value: obj.MailTypeId, text: obj.MailTypeName });
});
$.each(arr, function(i, n){
n.appendTo('#ddlTypeEdit');
})
或者只是: -
$('#ddlTypeEdit').append(arr);