jQuery synchronisiertes Ereignis auslösen?

7

Ich verwende die jQuery-Trigger-Methode, um ein Ereignis aufzurufen ... aber es verhält sich inkonsistent. Manchmal ruft es das Ereignis auf, manchmal nicht.

%Vor%

Dem custom-event wurden viele Listener hinzugefügt. Es ist, als ob die Trigger-Methode nicht synchron ist und erlaubt, dass window.location.href geändert wird, bevor die Ereignisse ausgeführt werden. Und wenn window.location.href geändert wird, findet eine Navigation statt, die alles unterbricht.

Wie kann ich Ereignisse synchron auslösen?

Verwenden von jQuery 1.8.1.

Danke!

BEARBEITEN

Ich habe festgestellt, dass das Ereignis, wenn es aufgerufen wird, einen Stack-Trace wie folgt hat:

  1. jQuery.fx.tick (jquery-1.8.1.js: 9021)
  2. tick (jquery-1.8.1.js: 8499)
  3. jQuery.Callbacks.self.fireWith (jquery-1.8.1.js: 1082)
  4. jQuery.Callbacks.fire (jquery-1.8.1.js: 974)
  5. jQuery.speed.opt.complete (jquery-1.8.1.js: 8991)
  6. $. customEvent (myfile.js: 28)

Dies beweist, dass jQuery trigger asynchron ist. (Ich habe mich geirrt ... das beweist nur, dass das Ereignis, das ich aufgerufen habe, eine Animation enthielt und die erwartete Funktion aufruft innerhalb des Rückrufs nach der Animation)

    
Miguel Angelo 12.11.2012, 04:41
quelle

2 Antworten

24

Sie, mein Freund, suchen jQuery "wann".

Ссылка

Um etwas zu erzwingen, um synchron zu sein, können Sie etwas wie dieses verwenden ....

%Vor%     
Trent 12.11.2012, 04:58
quelle
9

Dokumentation über triggerHandler lesen:

  

Anstatt das jQuery-Objekt zurückzugeben (um die Verkettung zu ermöglichen), gibt .triggerHandler () den Wert zurück, der vom letzten Handler zurückgegeben wurde, für den die Ausführung ausgelöst wurde. Wenn keine Handler erneut ausgelöst werden, gibt es undefined

zurück

Dieser Punkt in der Dokumentation lässt mich einen solchen Code denken:

%Vor%

würde Ihren Anforderungen entsprechen.

Siehe Ссылка

    
jehon 18.04.2013 08:46
quelle

Tags und Links