Люди, которые дважды щелкают все на веб-страницах... 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