Я пытаюсь удалить обработчик события из элемента, связанного с jQuery's on()
и удаляя его с помощью off()
. Обычно это будет работать, но в этом случае ничего не происходит.jQuery off() и bind (this)
this.element.on('click', this.handler);
this.element.off('click', this.handler);
Это будет работать, но в моем случае оно не работает из-за привязки области к обработчику.
this.element.on('click', this.handler.bind(this));
this.element.off('click', this.handler.bind(this));
Из-за рамки становится привязан к обработчику, метод off
не может отделить событие от элемента.
Я попытался с помощью ссылки, например, так:
var self = this;
this.element.on('click', this.handler.bind(self));
this.element.off('click', this.handler.bind(self));
Но не повезло ... кто не имеет представления о том, чтобы решить эту проблему?
Попробуйте сохранить результат 'this.handler.bind (self)' в переменной и передать его по ссылке. Для того чтобы unbind работать, если вы передаете ему функцию, функция должна быть той же функцией, которая была передана привязке. вызов .bind() снова создает новую функцию. –
Умный ход! Да, это сработает, но делает мой код своего рода неаккуратным, в этом случае мне нужно переписать много кода и сделать его методом/свойством моего класса, потому что мой attaing и detaching не находятся в одной и той же функции. – barry
Разве вы не можете сделать то, что сделал Дэн в своем ответе? или это сложнее, чем это. –