Люди, которые дважды щелкают все на веб-страницах... jQuery двойной щелчок problemo
У меня есть ссылка на веб-странице, открывается модальный диалог. При первом нажатии ссылки на код инициализации выполняется. Последующие клики не требуют никакой обработки. Проблема здесь в том, что люди дважды щелкают по ссылке, которую запускает код инициализации, - хотя, хотя я устанавливаю флаг сразу, чтобы сказать, что я инициализирован, и если флажок не запускает функцию init. Что мне делать?
- Я мог бы отменить функцию щелчка на
эта ссылка при нажатии, но затем я
необходимо снова привязать функцию, когда
диалог закрывается.
- Я мог бы привязываться к событию dblclick
и вернуть false?
- Я мог бы сохранить время "последнего звонка"
на элементе, а затем проверить, скажите
2 секунды прошло, прежде чем разрешить
пожар события?
Ответы
Ответ 1
Я использую обертка ajax для jQuery для Ben Nadel. Каждый раз, когда вы создаете запрос ajax, вы можете указать ему имя. Оболочка ajax отслеживает все именованные запросы и удаляет любые дубликаты, если она все еще ожидает ответа от предыдущего запроса с тем же именем.
Поместив все ваши вызовы ajax через этот "конвейер", у вас есть большой централизованный контроль над обработкой каждого вызова.
Ответ 2
Я создал плагин для расширения jQuery ajax-метода и добавил флаг singleton с дополнительным флагом блокировки, чтобы сообщить ajax игнорировать все последующие вызовы с помощью этого URL-адреса (или ключа).
Вы вызываете ajax обычно с дополнительными параметрами {singleton: true, blocking: true}
Когда вы вызываете один и тот же ajax дважды, второй вызов не срабатывает, если первый вызов все еще обрабатывается. V под рукой:
http://github.com/dougle/jQuery-Ajax-Singleton