Raphael.js中的火灾事件

Art*_*yan 8 javascript jquery events raphael

我有一个带有click事件处理程序的Raphael元素:

var paper = Raphael("container", 770, 160);
var c = paper.rect(10, 10, 50, 50);
c.click(function () {
    alert("triggering");
})
Run Code Online (Sandbox Code Playgroud)

如何手动触发此事件?(c.click()不要工作)
谢谢!

Dan*_*Lee 13

虽然这个问题已经得到解答,但我会发布我随机发现的解决方案.拉斐尔的内部成员可能会:

当你附加一个事件监听器时,element.click(func)element对象包含一个包含所有事件的数组.在这个数组中有一个对象,它有一个f触发事件的方法(奇怪的命名约定).

总而言之,你可以在知道事件顺序的情况下调用你的事件,在你的情况下只有click索引0上的事件,你可以这样称呼它:c.events[0].f();

一个更通用的解决方案就是这样的功能

function triggerClick(element) {
    for(var i = 0, len = element.events.length; i < len; i++) {
        if (element.events[i].name == 'click') {
            element.events[i].f();
        }
    }
}?
Run Code Online (Sandbox Code Playgroud)

但请注意,如果您有多个click事件,则所有事件都被触发.

这是一个小提琴演示.