我只是在选择标签(又名下拉列表)中添加选项。为什么第二个循环不起作用?我将不得不花一些时间来调试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]));
}
答案 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
属性,因此失败。