2017-07-18 7 views
0

Ich bin neu bei Javascript-Ereignissen Ich begegnete vielen Beispielen, in denen event als Parameter an die Funktion übergeben wird. So ist es zwingend notwendig, event zu jeder Funktion zu übergeben und wenn nicht, es zu übergeben. Wie im folgenden Code Ereignis wird in der 2. Funktion übergeben. Ich bin verwirrt, wenn ich vorbeigehen soll und wann nicht?Wann übergeben Sie Event als Parameter in Funktionen (Javascript)?

Antwort

0

Sie nicht Pass das Ereignis, es automatisch vom Browser in allen Standard-Event erfolgt löst. Die Frage tun ist, müssen Sie das Ereignis als benannte Argument erhalten in allen Funktionen und die Antwort auf diese Frage ist, es hängt alles davon ab, ob Sie werden es nutzen wollen:

Wenn man so will müssen Zugang zur Veranstaltung:

element.addEventListener("click", foo); 

// You can explicitly declare a function argument that will represent 
// the event object that is automatically passed to you by the browser 
function foo(evt){ 
    // And, then you can access the event in the function 
    evt.xyz... 
} 

Wenn Sie keinen Zugriff auf die Veranstaltung benötigen:

element.addEventListener("click", foo); 

// The event is still passed to the function, but now, you don't 
// have an explicit way to access it: 
function foo(){ 

} 

Auch hier wird die Veranstaltung unter allen Umständen weitergegeben werden, so dass es zu i geht nicht verbessern oder verringern Sie die Leistung, wenn Sie sich dafür entscheiden, die Referenz mit einem Argument zu erfassen. Als allgemeine Faustregel, um loszulegen, ist es wahrscheinlich eine gute Idee, sich ein benanntes Argument dafür zu geben, so dass Sie es leicht bekommen können, wenn Sie Zugriff darauf benötigen.

0

Wenn Ihre Frage ist, welche Fehlerhandler ein Ereignisobjekt erhalten, ist die Antwort alle.

Alle Funktionen, die Sie überoder andere Bibliotheken wie in Ihrem Beispiel hinzufügen jQuery erhalten ein event Objekt als ersten Parameter.

JavaScript ermöglicht es Ihnen jedoch, mehr Argumente in eine Funktion zu übernehmen, als sie tatsächlich benötigt. Daher ist es kein Fehler, eine Funktion bereitzustellen, die das Ereignisargument nicht verwendet, da die Funktion vom Browser usw. auf die gleiche Weise aufgerufen werden kann.

0

Nein, Sie müssen das Ereignis für die Funktion nicht übergeben.

Sie müssen das Element abrufen und nach Aufruf die Funktion aufrufen, die Sie auf dem Element anwenden möchten.

Es gibt ein kleines Beispiel für eine Funktion, die auf eine Schaltfläche angewendet wird.

$("#button1").on('click',function(){ 
 
    alert("clicked"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<button id="button1"> 
 
click me 
 
</button>

0
$('#my-elem').click(function(e) { 
    //the element has been clicked... do stuff here 
}); 

Sie sind nicht e (event) in diesem Fall vorbei, werden Sie es in Ihrer Funktion erhalten. Der Browser wird diese Funktion mit dem Ereignis als ersten Parameter aufrufen, wenn # my-elem angeklickt wird. Ihre Funktion erhält dieses Element als e. Dort können Sie Dinge wie

e.target 

und so weiter sehen.

0

Wenn Sie es verwenden müssen (z. B. stopPropagation() aufrufen), benennen Sie es in Ihrer Funktion. Wie IDME sagte, wird es übergeben, ob Sie es in Ihrer Funktionsdefinition nennen. Da Sie nur einen Rückruf deklarieren, ist es nicht Sie, der die "Weitergabe" durchführt. Sie übergeben eine Funktion. Wenn diese Funktion aufgerufen wird, wird sie mit einem Ereignisparameter aufgerufen. Wenn Sie es nennen:

function (e) {} 

dann können Sie darauf zugreifen mit

e.stopPropagation() 

wenn nicht, müssen Sie darauf zugreifen mit den Argumenten widersprechen.

Verwandte Themen