如何解除Raphael中的所有事件绑定

3
2个回答

3
这可能是一种实现方式。
Raphael.el.unbindAll = function(){
        while(this.events.length){          
            var e = this.events.pop();
            e.unbind();
        }
    }

然后解除一个元素的所有事件绑定

mypath.unbindAll();

2

我找到了一种解决方法,即替换raphael.js的源代码。

第2031行中的代码替换为:

R["un" + eventName] = elproto["un" + eventName] = function (fn) {
    var events = this.events,
        l = events.length;
    while (l--) if (events[l].name == eventName && || events[l].f == fn) {
        events[l].unbind();
        events.splice(l, 1);
        !events.length && delete this.events;
        return this;
    }
    return this;
};

使用这个

R["un" + eventName] = elproto["un" + eventName] = function (fn) {
    var events = this.events,
        l = events.length;
    while (l--) if (events[l].name == eventName && (!fn || events[l].f == fn) ) {
        events[l].unbind();
        events.splice(l, 1);
        !events.length && delete this.events;
        return this;
    }
    return this;
};

目前,如果未提供处理程序函数来解绑函数,则会解绑该事件的所有处理程序函数。

使用示例 element.unclick();(对于其他事件,例如element.unmouseout()也是如此)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接