Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Raphael对象存储在ZPD插件的变量中_Javascript_Jquery_Raphael - Fatal编程技术网

Javascript 将Raphael对象存储在ZPD插件的变量中

Javascript 将Raphael对象存储在ZPD插件的变量中,javascript,jquery,raphael,Javascript,Jquery,Raphael,我以前曾与Raphael合作过,但我已经回到我的项目中,并决定完全重新编写它,以提高性能和总体代码质量。无论如何,该应用程序使用Raphael创建思维导图(如果您阅读了我前面的问题,您将对整个应用程序有更多的了解) 因此,我使用paper.circle()等在画布上创建节点,为了避免使用.drag()进行不必要的工作,我决定使用。这个插件太复杂了,我无法完全理解,但我打算稍微编辑一下我想将活动节点存储在变量_节点中。要做到这一点,我认为只需获取evt.target并分配它即可,但显然不是这样 这

我以前曾与Raphael合作过,但我已经回到我的项目中,并决定完全重新编写它,以提高性能和总体代码质量。无论如何,该应用程序使用Raphael创建思维导图(如果您阅读了我前面的问题,您将对整个应用程序有更多的了解)

因此,我使用paper.circle()等在画布上创建节点,为了避免使用.drag()进行不必要的工作,我决定使用。这个插件太复杂了,我无法完全理解,但我打算稍微编辑一下我想将活动节点存储在变量_节点中。要做到这一点,我认为只需获取
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);
}