Ereignis-Listener wird zu früh ausgelöst, wenn Parameter übergeben werden

Ich übergebe eine Reihe von Parametern an eine JavaScript-Funktion, die ein Formular zum Ausfüllen durch den Benutzer erstellt. Unter diesen Parametern befinden sich zwei weitere Funktionen in einer separaten Klasse, die das Speichern oder Abbrechen des Formulars behandeln. Für die Cancel-Funktion sind zwei Parameter erforderlich, mit denen bestimmt wird, welche Liste von Entitäten erstellt werden soll. Das Problem liegt in den Parametern. Wenn ich in der Formularerstellungsfunktion die Abbruchfunktion an die neu erstellte Abbruchschaltfläche angehängt habe, ohne dass dieser Parameter zugewiesen wurden, funktioniert die Funktionsschaltfläche einwandfrei, erstellt jedoch aufgrund fehlender Parameter eine leere Liste. Wenn ich die Funktion jedoch mit den Parametern anhänge, wird die Funktion sofort ausgelöst, wenn die Seite erstellt wird und nicht, wenn auf die Schaltfläche geklickt wird. Ich habe versucht, den Listener auf verschiedene Arten anzubringen, einschließlich Javascript, jquery und sogar yahoo.util. In der Cancel-Funktion funktioniert alles korrekt, wenn sie in anderen Fällen mit Parametern aufgerufen wird. Irgendwelche Ideen, warum die Funktion zu früh ausgelöst wird, wenn Parameter übergeben werden?

Hier ist ein Sudo-Code für verschiedene Arten, wie ich den geraden Listener angehängt habe.

function buildform(formData, saveFunction, CancelFunction, p1, p2){
      $("#cancelButton").live("click", cancelFunction(p1, p2);
      YAHOO.util.Event.on("cancelButton", "click", cancelFuntion(p1, p2));
      cancelButton.setAttribute("onClick",cancelFunction(p1, p2);
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage