как отменить привязку всех событий Рафаэль - PullRequest
3 голосов
/ 30 января 2012

Функция Рафаэля для отл. element.unclick (обработчик) (который фактически вызывает eve.unbind (событие, обработчик) ) позволяет вам удалить обработчики обработчиком событий, но как отменить привязку всех обработчиков событий

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Это может быть один из способов сделать это.

Raphael.el.unbindAll = function(){
        while(this.events.length){          
            var e = this.events.pop();
            e.unbind();
        }
    }

и затем отменить привязку всех событий элемента

mypath.unbindAll();
2 голосов
/ 30 января 2012

Я нашел решение с заменой источника на 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())

...