这是我的一个对象中的一个函数:
updatePorts: function(nodeKey, portOptions, portArrays) {
var showing_ports = false;
$('#ports li').removeClass('active').hide();
$('#ports .tab-pane').removeClass('active in');
$.each(portOptions, function(side, options) {
if (options.editable) {
$('#ports [href="#'+side+'"]').closest('li').show();
if (!showing_ports) {
$('#ports [href="#'+side+'"]').closest('li').addClass('active');
$('#ports #'+side).addClass('active in');
}
$.each(portArrays[side], function(i,port) {
//do stuff
}
showing_ports = true;
}
})
}
我的问题是在$.each
循环之外我可以访问作为参数传递给函数的portArrays
变量。但是,我无法访问$.each
循环内的同一个变量。
我做错了吗?如何在循环内访问该变量?
更新:添加了实际访问portArrays的代码
答案 0 :(得分:0)
portArrays
,但您正在使用错误的索引。 side
变量是portOptions
的索引,而不是portArrays
。
它应该有什么指数?如果这两个数组并行运行相同的索引值,那通常是个坏主意 - 最好使用单个对象数组 - 至少需要在代码中记录。
BTW,JS控制台中的确切错误信息是什么?如果我的猜测不正确,错误信息将提供线索。
答案 1 :(得分:0)
我遇到了主题中描述的问题,但似乎提问者在其代码的其他地方遇到了问题。我的代码与下面的代码类似,我无法从this
访问我想要的内容。第一个日志可以工作,但每个循环内的日志都是未定义的。我现在意识到,每次使用jquery时都会重新分配this
- http://api.jquery.com/each/
List.prototype.updateList = function(search) {
console.log(this.id);
$.each(this.data, function(item, tags) {
console.log(this.id); //undefined
};
}
我已更改为使用for .. in
来迭代我的this.data对象并且它正常工作。希望这可以帮助别人。
List.prototype.updateList = function(search) {
console.log(this.id);
for(var key in this.data){
console.log(this.id); //hooray
}
}