【问题标题】:Why doesn't the click handler work on this Raphael object? [closed]为什么点击处理程序不能在这个 Raphael 对象上工作? [关闭]
【发布时间】:2012-07-06 01:10:29
【问题描述】:

我目前的项目是一张美国的热图:

http://up.massrelevance.com/cnbc/top-states/heatmap.html

它是在 Raphael 和几个预先打包的库的帮助下呈现的,以生成状态路径。在我的代码中,我生成了一个对代表每个状态的 Raphael 对象的引用数组;然后我遍历它们,使用 Raphael 的 .click() 方法为每个(实际的 Raphael 对象存储在 projection.map 中)附加一个点击处理程序:

Heatmap.prototype.stateClick = function() {
  var projection, 
      state, 
      _this = this;
  for (state in this.projections) {
    projection = this.projections[state];
    console.log(state);
    console.log(projection.map[0]);
    (function(state, projection) {
      projection.map.click(function() {
        _this.overlay.update(state, _this.states[state]);
        _this.overlay.reveal();
      });
    })(state, projection);
  }
};

这适用于 50 个州中的 48 个。但是,出于某种原因,阿拉斯加 (AK) 和俄克拉荷马 (OK) 似乎没有获得点击处理程序 - 也就是说,当我点击它们时,什么也没有发生。

在控制台查看上面代码中 console.log 调用的输出,我看不出 AK 和 OK 的 Raphael 对象与任何其他状态的对象之间有什么区别,所以我很困惑原因可能是。

谁能确定或猜测发生了什么,或者建议我如何进一步调试?是否有任何关于这些形状的绘制方式(例如,可能不是完全封闭的路径?)可能导致点击处理程序无法附加?

【问题讨论】:

    标签: javascript svg event-handling raphael dom-events


    【解决方案1】:

    天哪,想通了。我在阿拉斯加 (AK) 的州代码中打错字,而不是使用 OK。这就解释了为什么这是两个问题状态。我研究了一个多小时,直到休息后,以全新的眼光,我立即发现了错字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      相关资源
      最近更新 更多