我以前曾與Raphael一起工作過,但我已經返回到我的項目並決定完全重新編寫它以提高性能和一般代碼質量。無論如何,應用程序使用Raphael創建思維導圖(如果您已閱讀我以前的問題,您將對整個應用程序有更多的瞭解)。從ZPD插件存儲變量中的Raphael對象
因此,我使用paper.circle()等在畫布上創建節點,並避免使用.drag()的不必要的工作。我決定使用Raphael ZPD plugin。這個插件太複雜了,我不能完全理解,但我打算輕微編輯它。 我想將活動節點存儲在變量_node中。要做到這一點,我認爲這將如獲得evt.target
並分配它一樣簡單,但顯然不是。
這裏是插件(位,我覺得作業應該走)的一部分:
/**
* Handle mouse button release event.
*/
me.handleMouseUp = function(evt) {
if (evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
if ((me.state == 'pan' && me.opts.pan) || (me.state == 'move' && me.opts.drag)) {
// Quit pan mode
me.state = '';
}
};
當使用alert(evt.target);
(點擊圓圈時)我給:
[對象SVGCircleElement]
這意味着evt.target
越來越各個元件(如它更改爲其它形狀),但第嘗試在分配失敗後操作_node
。我得到一個錯誤信息:
_node.attr不是一個函數
(我試圖改變ATTR(),因爲這是最簡單的功能)。
我已經嘗試了許多使用節點,evt.target,evt.currentTarget等的變體,但我確信我只是缺少一些與evt.target
有關的東西,因爲它會在警報中產生正確的輸出。
據我所知,me.
是在代碼的其他地方定義的,所以如果你需要(看起來比發佈完整的插件更好),請查看上面的鏈接。
我會很感激任何幫助,你可以給。
謝謝。
更新:我現在100%肯定它是evt.target
,我應該在_node
被存儲,但它似乎有SVG,DOM和拉斐爾之間沒有直接的聯繫。關於如何將SVG元素鏈接回Raphael的任何想法?