Mehrere js-Ereignishandler für ein einzelnes Element

Ich arbeite mit einer vorhandenen Web-App. In der App gibt es eine Vielzahl von Sende-Schaltflächen in verschiedenen Formularen, von denen einige normale http-Posts verwenden, einige eine onClick-Funktion definieren und einige einen js-Ereignishandler mit einer Klasse auf der Schaltfläche verknüpfen Element.

Ich möchte einen anderen Ereignishandler an diese Schaltflächen binden, indem ich lediglich eine Klasse zu den Schaltflächen hinzufüge. Ich möchte jedoch feststellen, ob die Ausführung des neuen Ereignishandlers garantiert ist oder ob eine der Aktionen zum Senden des Formulars ausgeführt werden kann bevor es heißt, wird meine neue Funktion nicht getroffen.

Das Beispielszenario ist, dass ich diesen Schaltflächen eine Klasse hinzufügen möchte, die sie alle zu einer gemeinsamen js-Funktion zusammenfasst, die einfach die Verwendung einer bestimmten API protokolliert. Besteht das Risiko, dass die Protokollierungsfunktion nicht aufgerufen wird, weil das übermittelte Formular nicht mehr auf der Seite angezeigt wird?

Ich habe noch nicht viel entwickelt, und ich konnte das 100-mal testen und einfach Glück damit haben, dass es geschossen hat.

Im Folgenden ist ein Code aufgeführt, den ich für eines der Beispiele getestet habe. Wiederum frage ich nicht, wie mehrere Ereignisse gebunden werden sollen. Es geht darum, wie ich die Spezifikation verstehe und ob die Ausführung aller Handler garantiert ist.

$(document).ready(function(){
    $('.testingBtn').click(function() {
        window.location.replace("http://stackoverflow.com");
    });
    $( ".testingBtn" ).click(function(){
        alert('submitting!');
    });
});


<input class="testingBtn" type="submit" id="submitform" value="Complete Signup" />

Wie oben gezeigt, kann ich die mehreren Ereignisse binden und in diesem Beispiel nur auf eine andere URL verweisen, aber dies könnte eine seinform.submit() usw. Bei meinen Tests hat der Alarm immer zuerst ausgelöst, aber habe ich gerade Glück mit den Rennbedingungen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage