Javascript 将Raphael对象存储在ZPD插件的变量中
我以前曾与Raphael合作过,但我已经回到我的项目中,并决定完全重新编写它,以提高性能和总体代码质量。无论如何,该应用程序使用Raphael创建思维导图(如果您阅读了我前面的问题,您将对整个应用程序有更多的了解) 因此,我使用paper.circle()等在画布上创建节点,为了避免使用.drag()进行不必要的工作,我决定使用。这个插件太复杂了,我无法完全理解,但我打算稍微编辑一下我想将活动节点存储在变量_节点中。要做到这一点,我认为只需获取Javascript 将Raphael对象存储在ZPD插件的变量中,javascript,jquery,raphael,Javascript,Jquery,Raphael,我以前曾与Raphael合作过,但我已经回到我的项目中,并决定完全重新编写它,以提高性能和总体代码质量。无论如何,该应用程序使用Raphael创建思维导图(如果您阅读了我前面的问题,您将对整个应用程序有更多的了解) 因此,我使用paper.circle()等在画布上创建节点,为了避免使用.drag()进行不必要的工作,我决定使用。这个插件太复杂了,我无法完全理解,但我打算稍微编辑一下我想将活动节点存储在变量_节点中。要做到这一点,我认为只需获取evt.target并分配它即可,但显然不是这样 这
evt.target
并分配它即可,但显然不是这样
这是插件的一部分(我认为分配应该放在这里):
使用警报(evt.target)时代码>(单击圆时)我得到:
[对象svgcircleement]
这意味着evt.target
正在获取单个元素(因为其他形状会发生变化),但在赋值失败后尝试操作\u节点
。我收到以下错误消息:
_node.attr不是一个函数
(我试图更改attr(),因为这是最简单的函数)
我尝试过使用node、evt.target、evt.currentTarget等多种变体,但我确信我在evt.target
中遗漏了一些愚蠢的东西,因为它会在警报时生成正确的输出
我知道me.
是在代码的其他地方定义的,所以如果需要,请查看上面的链接(似乎比在这里发布完整的插件更好)
如果你能给我任何帮助,我将不胜感激
多谢各位
更新:我现在100%确定应该存储在\u node
中的是evt.target
,但SVG、DOM和Raphael之间似乎没有直接联系。关于如何将SVG元素链接回Raphael,有什么想法吗 我上周开始使用这个插件,遇到了同样的问题
我能够将SVG形状链接回形状的拉斐尔句柄
基本上,您首先必须维护一个指向raphael paper对象的指针,该对象绑定到zpd插件对象。我通过在var opts={…}行之后创建一个raphPaper声明来实现这一点
var raphPaper = null;
因此,raphPaper对象将像opts对象一样可用
当raphael创建一个形状时,它会指定两个变量(我已经找到):.raphael和.raphaelid
.raphael是一个布尔值,告诉我们SVG形状是否由raphael创建,.raphaelid为我们提供SVG形状的raphael内部id。因此,为了获得raphael元素,我们只需在纸对象(raphPaper)上使用getById
因此,对于您的问题,您只需将raphShp分配给_node或任何您想要访问的变量
var raphPaper = null;
if(evt.target.raphael){
var raphShp = raphPaper.getById(evt.target.raphaelid);
}