В jQuery, там какой-либо способ только связать щелчок однажды?

У меня есть ajax приложение, которое выполнит функции на каждом взаимодействии. Я хотел бы смочь выполнить свою функцию установки каждый раз, таким образом, весь мой код установки для той функции остается инкапсулированным. Однако обязательные элементы несколько раз означают, что обработчик будет работать несколько раз, который является, очевидно, нежелательным. Существует ли изящный путь в jQuery для вызова, привязывают элемент несколько раз без обработчика, называемого несколько раз?

8
задан Chris Henry 1 June 2010 в 04:07
поделиться

2 ответа

Вы можете прикрепить событие к документу с помощью функции one () :

$(document).one('click', function(e) {
    // initialization here
});

После запуска этот обработчик событий снова удаляется, чтобы он не запускался опять таки. Однако, если вам нужна инициализация для запуска перед событием щелчка какого-либо другого элемента, нам придется подумать о другом. Использование mousedown вместо click может тогда работать, поскольку событие mousedown запускается перед событием click.

8
ответ дан 5 December 2019 в 07:10
поделиться

Пользовательский jQuery одна функция, как сказал Том, но каждый раз отключайте обработчик перед повторной привязкой. Лучше назначить обработчик событий переменной, чем использовать анонимную функцию.

 var handler = function(e) { // stuff };

 $('#element').unbind('click', handler).one('click', handler);

 //elsewhere
 $('#element').unbind('click', handler).one('click', handler);

Вы также можете выполнить .unbind ('click') , чтобы удалить все обработчики щелчков, прикрепленные к элементу.

12
ответ дан 5 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: