Binden einer vorhandenen JavaScript-Funktion in jQuery

Lesezeit: 2 Minuten

Benutzer-Avatar
Jack Mills

Mit jQuery möchte ich eine vorhandene Funktion an eine Schaltfläche binden. Ich habe die Dokumentation durchgesehen und die gefunden bind -Methode, aber die Beispiele auf der jQuery-Site binden neu erstellte Funktionen, wo ich eine bereits definierte Funktion binden möchte, z.

function fHardCodedFunction(){
   //Do stuff
}

function fBindFunctionToElement(){
   $("#MyButton").bind("click", fHardCodedFunction());
}

Ist das möglich? Oder gehe ich das falsch an?

  • Hier ist der zugehörige Abschnitt aus der jQuery-API-Dokumentation: Mehrfachauswahl

    – informatik01

    17. Januar 2018 um 17:20 Uhr

Die Ebene fHardCodedFunction bezieht sich bereits auf die Funktion und das Suffix () werde es einfach anrufen. Übergeben Sie also einfach die Funktion, anstatt sie aufzurufen und damit nur den Rückgabewert zu übergeben:

function fBindFunctionToElement(){
   $("#MyButton").bind("click", fHardCodedFunction);
}

  • @Jack Mills: Dann müssen Sie eine (anonyme) Wrapping-Funktion wie verwenden function() { return fHardCodedFunction("foo","bar"); } an die Sie als Callback-Funktion übergeben bind.

    – Gumbo

    5. September 2009 um 19:11 Uhr

  • Das ist fast das, was ich versuche (ich verwende stattdessen .click(), aber soweit ich das beurteilen kann, ist es dasselbe). Meine gebundene Funktion funktioniert jedoch nicht – hat die gebundene Funktion Zugriff auf dieselben Variablen wie die click()-Funktion? Oder vielleicht bei der Verwendung der Syntax $("#mydiv").click(function(){ $("#mydiv").hide();}werden versteckte Variablen an die Funktion übergeben?

    – Johannes C

    25. Mai 2012 um 14:58 Uhr

  • Wenn Sie einen Parameter übergeben möchten, können Sie die äußere Funktion innerhalb Ihrer anonymen Funktion aufrufen und die Parameter auf diese Weise übergeben.

    – Jack of Blades

    22. April 2018 um 21:20 Uhr

Benutzer-Avatar
David Andrés

In Anlehnung an die anderen Posts können Sie Ihren Event-Handler wie folgt parametrisieren:

function fHardCodedFunction(someValue) {
  alert(this.id + " - " + someValue);
}


function fBindFunctionToElement() {
  var someValue = "whatever";
  $("#MyButton").bind("click", 
       function() {
         fHardCodedFunction.apply(this, [someValue]);
       }
  );
}


$(document).ready
(
  function() {
    fBindFunctionToElement();
  }
);

Ich verwende hier apply, weil es in Funktion ist fHardCodedFunction Ich möchte die this Eigenschaft, auf die zu verweisen MyButton Element. Beachten Sie auch, dass apply ein Array für den zweiten Parameter erwartet, weshalb ich es umgebrochen habe someValue in Klammern.

Sie müssen es nicht so machen und können es vergessen this Eigentum zusammen, wenn Sie es vorziehen.

Ja, Sie können Methoden binden, die woanders geschrieben wurden, aber Sie sollten die Klammern ignorieren:

function fHardCodedFunction(){
   //Do stuff
}

function fBindFunctionToElement(){
   $("#MyButton").bind("click", fHardCodedFunction);
}

1099510cookie-checkBinden einer vorhandenen JavaScript-Funktion in jQuery

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy