2013-06-20 34 views
1

我正在使用Raphael.js繪製一些形狀,我想知道如何通過點擊它可以選擇當前和發射一個click()函數。功能上目前點擊raphael.js項目

我有這樣的功能:

function selectItem() { 
    console.log("selected" + this.id); 
    rect.attr({ 
     fill: "#ff0" 
    }); 

,我嘗試使用此:

this.click(selectItem); 

已知拉斐爾利用自己的點擊功能,我想this會工作。 不幸的是,它沒有。 在此先感謝。

回答

2

您可以執行以下操作使用拉斐爾的點擊()函數,檢查DEMO

這個簡單的代碼使用click()功能:

var paper = Raphael("area", 400, 400); 
var r = paper.rect(100, 50, 80, 60, 10).attr({fill: 'yellow', stroke: 'red'}), 
    c = paper.circle(200, 200, 50).attr({fill: 'yellow', stroke: 'red'}); 


r.click(function() { 
    // add your console.log if needed 
    r.attr({fill: 'red', stroke: 'yellow', "stroke-width": 2}); 
    c.attr({fill: 'yellow', stroke: 'red'}); 
}); 

c.click(function() { 
    c.attr({fill: 'red', stroke: 'yellow', "stroke-width": 2}); 
    r.attr({fill: 'yellow', stroke: 'red'}); 
}); 

現在,如果你想使用this,那麼請記住,它只適用於在元素創建範圍內使用它。您可以手動爲您的所有元素添加此代碼,也可以創建幾個數組以保留元素。然後如果你知道你想申請的索引click(),只需撥打arr[ind].click()即可。

編輯:看看這個demo,我用過這個。

+0

問題在於,形狀是動態繪製的。這意味着我有,可以說有10個形狀具有相同的'var rect = paper.rect(100,50,80,60,10);'這意味着只有最後我繪製才能獲得點擊事件。 – supersize

+0

我用'this'添加了新的DEMO,上面寫着 – Brian

+0

,非常感謝,這對我很有幫助! – supersize