1

这是我的一个对象中的一个函数:

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 的代码

4

2 回答 2

0

portArrays 在您使用它的位置定义,但您使用了错误的索引。该side变量是 的索引portOptions,而不是portArrays

它应该有什么索引?如果这两个数组以相同的索引值并行运行,那通常是个坏主意——最好使用单个对象数组——并且至少需要在代码中记录。

顺便说一句,JS 控制台中的确切错误消息是什么?如果我的猜测不正确,错误消息会提供线索。

于 2013-06-04T19:33:57.620 回答
0

我遇到了主题中描述的问题,但是提问者的代码中的其他地方似乎有问题。我的代码类似于下面的代码,我无法访问我想要的内容this。第一个日志可以工作,但每个循环内的日志是未定义的。我现在意识到this在使用 jquery each 时会重新分配 - 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
    }
}
于 2014-09-23T19:47:24.320 回答