我現在的項目是美國的一個熱圖:爲什麼點擊處理程序不能在這個Raphael對象上工作?
http://up.massrelevance.com/cnbc/top-states/heatmap.html
它與拉斐爾的幫助和一對夫婦的預包裝庫來生成狀態的路徑呈現。在我的代碼中的某個時刻,我生成了代表每個狀態的Raphael對象的引用數組;然後,我在它們之間迭代,附加一個單擊處理程序,以每(實際拉斐爾對象存儲在projection.map
)用拉斐爾的.click()
方法:
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
調用輸出的控制檯時,我看不到任何其他狀態對象的Raphael對象之間的差異,所以我很困惑,究竟是什麼原因也許。
任何人都可以確定或猜測發生了什麼,或者可能建議我如何進一步調試?是否有任何關於如何繪製這些形狀(例如,可能不是完全封閉的路徑?),可能導致點擊處理程序無法連接?
謝謝!