Ich bin neu in JavaScript / jQuery und habe gelernt, wie man Funktionen erstellt. Viele Funktionen sind mit (e) in Klammern aufgetaucht. Lassen Sie mich Ihnen zeigen, was ich meine:
$(this).click(function(e) {
// does something
});
Es scheint immer, dass die Funktion nicht einmal den Wert von (e) verwendet. Warum ist sie also so oft vorhanden?
quelle
Intro
Das kleine ' (e) ' Ding ist tatsächlich Teil eines breiteren Bereichs von etwas in Javascript, das als Ereignisbehandlungsfunktion bezeichnet wird. Jede Ereignisbehandlungsfunktion empfängt ein Ereignisobjekt. Stellen Sie sich ein Objekt für diese Diskussion als ein "Ding" vor, das eine Reihe von Eigenschaften ( Variablen ) und Methoden ( Funktionen ) enthält, ähnlich wie Objekte in anderen Sprachen. Das Handle, das ' e ' in dem kleinen (e) Ding, ist wie eine Variable, mit der Sie mit dem Objekt interagieren können (und ich verwende den Begriff Variable SEHR locker).
Betrachten Sie die folgenden jQuery-Beispiele:
Erläuterung
Was ist los?
Wenn ein Benutzer auf das Element mit der ID "#someLink" (wahrscheinlich ein Ankertag) klickt , rufen Sie eine anonyme Funktion "function (e)" auf und weisen Sie das resultierende Objekt einem Handler "e" zu . Nehmen Sie nun diesen Handler und rufen Sie eine seiner Methoden auf, "e.preventDefault ()" , die verhindern soll, dass der Browser die Standardaktion für dieses Element ausführt.
Hinweis: Das Handle kann so ziemlich alles benannt werden, was Sie wollen (dh ' Funktion (Billybob) '). Das 'e' steht für 'event', was für diese Art von Funktion ziemlich Standard zu sein scheint.
Obwohl 'e.preventDefault ()' wahrscheinlich die häufigste Verwendung des Ereignishandlers ist, enthält das Objekt selbst viele Eigenschaften und Methoden, auf die über den Ereignishandler zugegriffen werden kann.
Einige wirklich gute Informationen zu diesem Thema finden Sie auf der Lernseite von jQuery unter http://learn.jquery.com . Achten Sie besonders auf die Abschnitte Verwenden von jQuery Core und Events .
quelle
e
hat keine besondere Bedeutung. Es ist nur eine Konvention, diee
als Funktionsparametername verwendet wird, wenn der Parameter istevent
.Es kann sein
auch.
quelle
In diesem Beispiel
e
ist dies nur ein Parameter für diese Funktion, aber es ist dasevent
Objekt, das durch sie übergeben wird.quelle
Das
e
Argument ist kurz für das Ereignisobjekt. Beispielsweise möchten Sie möglicherweise Code für Anker erstellen, der die Standardaktion abbricht. Um dies zu tun, würden Sie etwas schreiben wie:Dies bedeutet
<a>
, dass beim Klicken auf ein Tag die Standardaktion des Klickereignisses verhindert wird.Obwohl Sie es häufig sehen, müssen Sie es nicht innerhalb der Funktion verwenden, obwohl Sie es als Argument angegeben haben.
quelle
In jQuery
e
kurz fürevent
das aktuelle Ereignisobjekt. Es wird normalerweise als Parameter für die auszulösende Ereignisfunktion übergeben.Demo: jQuery-Ereignisse
In der Demo habe ich verwendet
e
Ich könnte genauso gut verwendet haben
event
Gleiche Sache!
Programmierer sind faul, wir verwenden viel Kurzschrift, teils verringert dies unsere Arbeit, teils hilft es bei der Lesbarkeit. Wenn Sie das verstehen, können Sie die Mentalität des Codeschreibens besser verstehen.
quelle
Heute habe ich gerade einen Beitrag über "Warum verwenden wir die Buchstaben" e "in e.preventDefault ()?" Geschrieben. und ich denke, meine Antwort wird einen Sinn ergeben ...
Lassen Sie uns zunächst die Syntax von addEventListener sehen
Normalerweise ist es: target.addEventListener (Typ, Listener [, useCapture]);
Und die Definition der Parameter von addEventlistener sind:
(Von MDN)
Ich denke jedoch, dass eines beachtet werden sollte: Wenn Sie die Javascript-Funktion als Listener verwenden, wird das Objekt, das die Ereignisschnittstelle (Objektereignis) implementiert, automatisch dem "ersten Parameter" der Funktion zugewiesen Funktion (e), das Objekt wird "e" zugewiesen, da "e" der einzige Parameter der Funktion ist (definitiv der erste!), dann können Sie e.preventDefault verwenden, um etwas zu verhindern ....
Versuchen wir das folgende Beispiel:
Das Ergebnis ist: [Objekt MouseEvent] 5 und Sie verhindern das Klickereignis .
aber wenn Sie das Kommentarzeichen entfernen wie:
Sie erhalten: 8 und einen Fehler : "Nicht erfasster TypeError: e.preventDefault ist keine Funktion bei HTMLInputElement. (VM409: 69)".
Natürlich wird das Klickereignis diesmal nicht verhindert. Weil das "e" in der Funktion erneut definiert wurde.
Wenn Sie den Code jedoch ändern in:
Alles wird wieder richtig funktionieren ... Sie erhalten 8 und das Klickereignis wird verhindert ...
Daher ist "e" nur ein Parameter Ihrer Funktion und Sie benötigen ein "e" in Ihrer Funktion (), um das "Ereignisobjekt" zu empfangen, und führen dann e.preventDefault () aus. Dies ist auch der Grund, warum Sie das "e" in Wörter ändern können, die nicht von js reserviert sind.
quelle
Es ist eine Referenz auf das aktuelle Ereignisobjekt
quelle
In Bezug auf den obigen Code
$(this)
ist das Element, das als eine Variable.click
ist das Ereignis, das durchgeführt werden muss.Der Parameter
e
wird automatisch von js an Ihre Funktion übergeben, die den Wert$(this)
value enthält und in Ihrem Code weiter verwendet werden kann, um eine Operation auszuführen.quelle