2012-07-06 90 views
0

我現在的項目是美國的一個熱圖:爲什麼點擊處理程序不能在這個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對象之間的差異,所以我很困惑,究竟是什麼原因也許。

任何人都可以確定或猜測發生了什麼,或者可能建議我如何進一步調試?是否有任何關於如何繪製這些形狀(例如,可能不是完全封閉的路徑?),可能導致點擊處理程序無法連接?

謝謝!

回答

0

呃,算了一下。我在阿拉斯加州(AK)的州代碼中輸入了錯字,而不是使用OK。這就解釋了爲什麼這些是兩個問題狀態。我在一個小時之前深入研究這個問題,直到休息一會之後,我用一雙新鮮的眼睛立即發現了這個錯字。

相關問題