jQuery .each与jQuery select的追加冲突

时间:2011-05-06 18:27:57

标签: jquery select append

我只是在选择标签(又名下拉列表)中添加选项。为什么第二个循环不起作用?我将不得不花一些时间来调试jQuery,但如果我花费太多时间,我想我会发布这个并继续执行新任务。

这是我的键/值对数组:

var map = {             “10”:“十”,             “11”:“十一”,             “12”:“十二”         };

这不起作用:

    jQuery.each(map, function(key, val) {
        jQuery(this.Elements.DDLTest).append(jQuery("<option></option>").val(key).text(val)); 
    });

这有效:

    for (key in map) {
        jQuery(this.Elements.DDLTest).append(jQuery("<option></option>").val(key).text(map[key]));
    }

2 个答案:

答案 0 :(得分:5)

jQuery.each中,回调中的this变量包含当前元素,而不是它在外部范围内的任何值。

试试这个:

var that = this;
jQuery.each(map, function(key, val) {
    jQuery(that.Elements.DDLTest).append(jQuery("<option></option>").val(key).text(val)); 
});

答案 1 :(得分:3)

第一个例子中的this改变了背景; this引用map引用,由于它没有Elements属性,因此失败。