JQuery: Wie verwende ich Event.PreventDefault () mit benutzerdefinierten Ereignissen?

StackOverflow https://stackoverflow.com/questions/2229647

  •  19-09-2019
  •  | 
  •  

Frage

Wie kann ich in meinem auslösenden Code wissen, das preventDefault genannt worden?

$(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();
War es hilfreich?

Lösung

Trigger () kann auch ein Ereignisobjekt aufnehmen. Wenn Sie also ein Ereignisobjekt erstellen können, wie so:

var event = jQuery.Event("customEvent");
$(document).trigger(event);

Anschließend können Sie nach dem Auslöser prüfen, ob PURDDEFAULT () wie SO genannt wurde:

var prevented = event.isDefaultPrevented();

Andere Tipps

Wenn Sie fragen, wie Sie herausfinden, ob der Standard verhindert wurde oder nicht, verwenden Sie:

event.isDefaultPrevented()

Dies wird "wahr" oder "falsch" zurückgegeben, basierend darauf, ob die Default () aufgerufen wurde oder nicht.

BEARBEITEN:http://api.jquery.com/event.isdefaultprevented/

Benutzerdefinierte Ereignisse haben keine Standardaktionen, die geschehen. (Sie sind individuell).

Andererseits, wenn Sie die sprudelnde Wirkung dieses Ereignisses auf andere stoppen möchten, schauen Sie sich an triggerHandler was nicht zur Hierarchie sprudelt ..

Meines Wissens geht es im Aufruf "PREIDDEFAULT ()" darum, die nativen Browser -Antworten auf Dinge wie Klicks auf Anker -Tags oder Tastendrücken in Textfeldern zu verhindern. Sobald der Event -Handling -Zyklus vorbei ist, ist er vorbei. Bei erstellten Ereignissen habe ich keine Wirkung, da es nur um das JQuery-Event-Verarbeitungssystem und nicht um native Browserfunktionalität geht.

Ihr Code könnte irgendwo eine Flagge festlegen, um mit der "Außenwelt" zu kommunizieren.

bearbeiten] ooh Sie könnten versuchen, den Handler einen Verweis auf das Ereignisobjekt irgendwo zu verhindern, dass der extere Code ihn finden kann, und dann extern mit "isDefaultPrevented ()" erkundigt. Ich weiß jedoch nicht, ob das funktionieren würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top