2013-03-08 27 views
0

我知道這個問題之前已經被問過了,我一直在嘗試使用已經提供給其他人的問題的解決方案,但是我沒有太多的運氣。我正在使用raphael.js爲Battletech製作一張星圖。地圖列出了2100多顆星。當用戶懸停在星號上時,它會顯示星號系統的名稱並將光標更改爲指針。當用戶點擊這個明星時,我會打開一個關於那個明星系統的新信息。我遇到的麻煩是確定用戶點擊了哪個星星,以便我可以提供適當的信息。我一直在使用以下URL作爲指導:How to access id attribute of any element in Raphael如何捕獲稍後使用的raphael.js對象的標題?

很難列出我試過的東西。如果我試圖檢索id,名稱或標題,我會得到未定義的。我認爲在定義點擊事件方面存在問題。

var flare = starfieldGlow.circle(cX, cY, 2).attr({'fill' : starMatch , 'stroke' : '#000000' , 'title' : worldList[i][0] , 'cursor' : 'pointer'}); 
flare.node.setAttribute('id',"star"+i); 
flare.click(function() { starClickReturn() }); 
glowHolder.push(flare); 

function starClickReturn() { 
    $('#starExplorer').show(); 
    alert(this.id); - Tried many variants here. 
} 

回答

1

使用jQuery創建您的data objects並將它們關聯到每個星。然後在點擊功能過程中顯示特定數據。這個過程連同jQuery each,可能適合你。

+0

需要讓兩部分都正確並且不知道哪個部分是錯的是痛苦。這部分看起來是否正確? '$(flare).data(star,worldList [i] [0]);' 以下告訴我未定義JQuery,使用1.7.1或最新版本。 'JQuery.data(flare,star,worldList [i] [0]);' – 2013-03-09 01:47:35

+0

我終於有了它的工作。 ('star',worldList [i] [0]);' ''flare.click(function(){starClickReturn(this.data('star'))});' 我可以然後根據傳遞給該函數的字符串構建我的內容。 – 2013-03-09 05:40:56

+0

太棒了!我很高興爲你找到了查爾斯! – blackhawk 2013-03-09 18:22:46

相關問題