undelegate
egorogl opened this issue · 3 comments
Я вешаю событие tap
$('body').delegate('.right', 'tap', fun);
как сделать undelegate ?
У меня сайт с ajax подгрузкой страниц и скриптов.
$('body').undelegate('.right', 'tap');
$('body').delegate('.right', 'tap', fun);
$('body').undelegate('.right', 'tap');
$('body').delegate('.right', 'tap', fun);
fun вызовет 2 раза
The next code is works fine, but it doesn't correct.
$('body').delegate('#element', 'tap', function() {
console.log(this);
});
$('body').undelegate('#element', 'tap');
You should delegate your events to document and, in this way, undelegation is unnecessary.
$(document).on('tap', '#element', function() {
console.log(this);
});
$(document).off('tap', '#element');
Also, if the "tap" event fires more times than you need, you should debug your events nesting level or make refactor of your JS code.
Documentation links:
.on(), .off(), .delegate(), .undelegate().
PS:
Which version of jQuery you uses?
Версия jquery-1.10.2
$(document).on('tap', '.right', fun);
$(document).off('tap', '.right');
Вот так отключает событие
$(document).on('tap', '.right', fun);
$(document).off('tap', '.right');
$(document).on('tap', '.right', fun);
А вот так, уже 2 раза вызывает. Я уже понял, что это не в плагине проблема. Не подскажете, как очищать предыдущие функции?
An issue was fixed.