2010-02-17 9 views
11

Mam łącze na stronie internetowej otwiera modalne okno dialogowe. Przy pierwszym kliknięciu łącza wykonywany jest kod inicjujący. Kolejne kliknięcia nie wymagają żadnego przetwarzania. Problem polega na tym, że gdy ludzie dwukrotnie klikną łącze, kod inicjujący działa dwa razy - nawet jeśli ustawiam flagę natychmiast, aby powiedzieć, że jestem zainicjalizowany, a jeśli oflaguję, to nie uruchamiam funkcji init. Co powinienem zrobić?Osoby, które podwójnie klikają wszystko na stronach internetowych ... jQuery Kliknij dwukrotnie problemo

  • mogę rozpiąć funkcję kliknij na ten link po kliknięciu, ale potem muszę ponownie powiązać funkcji przy okno się zamyka.
  • Mogę powiązać zdarzenie dblclick i zwrócić false?
  • Mogę zapisać "ostatni raz" czas na elemencie, a następnie sprawdzić, czy powiedz 2 sekundy minęło przed ogłoszeniem zdarzenia ognia?
+2

nie można po prostu powiązać z dblclick jak również? Nie rozumiem, dlaczego to nie zadziałałoby. –

+0

Problem z powiązaniem z dblclick polega na tym, że jeśli użytkownik kliknie dwukrotnie, a ja zwrócę fałsz - okno dialogowe nie otworzy się, a użytkownik pozostanie uruchomiony wtf, ten link nie zadziała :) Chyba mógłbym poczekać kilka milisekund, a następnie wywołać kliknięcie funkcjonować ręcznie? – superlogical

Odpowiedz

5

Używam Ben Nadel's jQuery ajax wrapper. Za każdym razem, gdy tworzysz zapytanie ajax, możesz opcjonalnie nadać mu nazwę. Opakowanie ajax śledzi wszystkie nazwane żądania i usuwa wszystkie duplikaty, jeśli wciąż czeka na odpowiedź z poprzedniego żądania o tej samej nazwie.

Po umieszczeniu wszystkich wywołań ajaxowych za pośrednictwem tego "potoku", masz doskonałą scentralizowaną kontrolę nad obsługą każdego połączenia.

+0

Cześć womp - dzięki za heads up! To jest coś, z czym borykałem się trochę uczciwie :) Sprawdzę to! – superlogical

0

Zrobiłem wtyczkę, aby rozszerzyć metodę ajax jquery i dodać flagę singleton, z dodatkową flagą blokującą, aby powiedzieć ajaxowi, aby ignorował wszystkie kolejne połączenia za pomocą tego adresu URL (lub klucza).

zadzwonić ajax zazwyczaj z dodatkowym {Singleton: true, blokując: true} opcje

Po wywołaniu samo ajax dwukrotnie drugie połączenie nie ognia, jeśli pierwsza rozmowa jest nadal przetwarzania. V przydatny do tej pory:

http://github.com/dougle/jQuery-Ajax-Singleton

+0

Sądzę, że musiałbym wypróbować to :) Mój problem nie ma nic wspólnego z ajaxem - to robi mnóstwo widżetów YUI, co jest bardzo kosztowne. Więc owinięcie plików jQuery ajax jest w porządku, jeśli robiłem ajax. Ale w tym przypadku chodzi o podwójne kliknięcie. – superlogical

Powiązane problemy