2011-08-25 82 views
0

我正在使用Raphael JS库。 它太棒了,也符合要求。我试图弄清楚,如何为库中的所有节点编写一个通用的事件处理函数 。我需要'clicked'对象实例来定制它的点击事件。Raphael中的事件处理Javascript库

我已经在CSS中为'raphael canvas'声明了一个ID,因此对于画布上的任何点击,我都会使用jQuery在此处理程序中接收事件。我还为画布中的所有节点添加了“node.id”。

这是gen的原型。事件处理器。

$j('#holder').bind('click', function(event) { 

    // event handler. 

} 

但是,我无法接收被点击的节点的'对象实例'。

event.srcElement属性也失败。

任何帮助将不胜感激。

谢谢, Karthik。

+0

出于好奇,为什么jQuery的$ j别名? (通常是jQuery或简单的:$)。 – jjmontes

回答

2

我认为问题可能是您正在使用jQuery的click函数将事件绑定到Raphael输出的DOM/SVG/VML,当它听起来像您想要获得的是原始的Raphael数据对象这个输出(而不是实际的输出本身)。

所以,你可能会通过调用Raphael自己的.click()函数绑定到你第一次调用Raphael函数时定义的变量(例如var someVar = Raphael(xxx...);中的someVar)来得到你想要的。

然后,在函数内部,this应该给拉斐尔对象(尽管喊你已经从.click(function(){ });中定义可能会更可靠的结果变量,尤其是如果以后你要bind an event to a set)。 event.target很可能仍会提供实际点击的DOM元素。

这就是它如何工作的元素,相同或类似的逻辑可能会遵循纸张/画布本身。