У меня есть ajax приложение, которое выполнит функции на каждом взаимодействии. Я хотел бы смочь выполнить свою функцию установки каждый раз, таким образом, весь мой код установки для той функции остается инкапсулированным. Однако обязательные элементы несколько раз означают, что обработчик будет работать несколько раз, который является, очевидно, нежелательным. Существует ли изящный путь в jQuery для вызова, привязывают элемент несколько раз без обработчика, называемого несколько раз?
Вы можете прикрепить событие к документу
с помощью функции one ()
:
$(document).one('click', function(e) {
// initialization here
});
После запуска этот обработчик событий снова удаляется, чтобы он не запускался опять таки. Однако, если вам нужна инициализация для запуска перед событием щелчка какого-либо другого элемента, нам придется подумать о другом. Использование mousedown
вместо click
может тогда работать, поскольку событие mousedown запускается перед событием click.
Пользовательский jQuery одна
функция, как сказал Том, но каждый раз отключайте обработчик перед повторной привязкой. Лучше назначить обработчик событий переменной, чем использовать анонимную функцию.
var handler = function(e) { // stuff };
$('#element').unbind('click', handler).one('click', handler);
//elsewhere
$('#element').unbind('click', handler).one('click', handler);
Вы также можете выполнить .unbind ('click')
, чтобы удалить все обработчики щелчков, прикрепленные к элементу.