我有这个jsfiddle,我正在尝试使用对象键来调用不同的函数。



  var LaneWizard = {
    targets: {
      Lane: $('.lane-colors span'),
      AltLane: $('.alt-lane-colors span')
    },
    prepTargets: function() {
      for(var t in LaneWizard.targets) {
        LaneWizard.targets[t].on('click', function() {
          LaneWizard['change'+t+'Color']($(this));
        });
      }
    }
  }


在此示例中,有两(2)个同心圆。外圈应由第一行(车道颜色)控制,内圈应由第二行(备用车道颜色)控制。

我不知道为什么它们都改变了内圈的颜色。

最佳答案

值“ t”始终具有最后一个值。
做这样的事情:

prepTargets: function() {
  for(var t in LaneWizard.targets) {
    LaneWizard.attachClick(t);
  }
},
attachClick: function(t) {
  LaneWizard.targets[t].on('click', function() {
    LaneWizard['change'+t+'Color']($(this));
  });
}

10-06 00:12