jQuery的appendTo方法导致“context is undefined”错误

时间:2015-09-11 14:04:04

标签: javascript jquery html

页面有两个下拉列表,应该从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'));

2 个答案:

答案 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);