Was bedeutet jQuery(function($) { … })?

Lesezeit: 4 Minuten

Benutzeravatar von Leem
Leem

Ich weiß in jQuery, $(callback) ist das gleiche wie jQuery(callback) was die gleiche Wirkung hat wie $(document).ready().

Wie wäre es mit

jQuery(function($) {

 });

Kann mir jemand erklären, was diese Art von Funktion bedeutet?

Was tut es?

was ist der unterschied zwischen diesem und $(callback)??

was ist der unterschied zwischen diesem und $(function())??

Benutzeravatar von George Karpenkov
Georg Karpenkow

jQuery(function($) {

});

ist die sicherste Version von allen dreien. Es macht $ die lokale Variable und vermeidet so auf elegante Weise die Konflikte mit anderen Variablen, die möglicherweise verwendet werden $ Symbol.

Ich denke, es wurde auch erst vor kurzem hinzugefügt, kann mich nicht erinnern, es schon einmal gesehen zu haben.

Diese Funktionen machen alle dasselbe – führen Code aus, wenn DOM bereit ist. $(document).ready(function(){}) ist das Original und stimmt mit der zugrunde liegenden JavaScript-API überein.

“$” und “jQuery”, die Funktionen als Argumente akzeptieren, wurden als Abkürzungen erstellt, um die Wiederholung eines solchen gemeinsamen Konstrukts zu vermeiden. Das Akzeptieren einer Funktion, die $ als erstes Argument akzeptiert, ist ein weiterer Syntax-Zucker – jetzt können Sie die Closures bequemer verwenden, ohne es selbst tun zu müssen.

  • Ich mag deine Antwort (wenn sie richtig ist), ziemlich klare Erklärung 🙂

    – Leim

    23. Juni 2011 um 13:29 Uhr

  • kann ich folgendes tun? Dasselbe? $(function($){...});

    – Johny warum

    14. Juni 2018 um 20:28 Uhr


  • So $(document).ready(function(){}) ist äquivalent zu jQuery(function($) {}); ??

    – Schwarz

    16. Mai 2019 um 8:41 Uhr

Benutzeravatar von ThiefMaster
DiebMeister

  • $(function()) ist ein Syntaxfehler.
  • $() erstellt ein leeres jQuery-Objekt.
  • $(document).ready(function() { ... }) führt die angegebene Funktion aus, wenn das DOM bereit ist
  • $(function() { ... }) ist eine Abkürzung für dasselbe
  • jQuery(function($) { ... }) tut das auch, aber es macht auch $ innerhalb der Funktion verfügbar, egal wie sie außerhalb eingestellt ist.

Wenn Sie die Hauptfunktion der jQuery-Factory aufrufen (entweder als jQuery(<something>) oder die allgemeine Abkürzung $(<something>)) entscheidet es basierend auf der Art von, was zu tun ist <something>.

Übergeben Sie eine Zeichenfolge als <something> Es geht davon aus, dass es sich um eine Selektorspezifikation handelt, und gibt eine jQuery-Liste mit Elementen zurück, die mit diesem Selektor übereinstimmen.

Wenn Sie ein jQuery-Objekt übergeben (das eine Liste von Elementen darstellt, dh ein Objekt, das von einem vorherigen Aufruf von jQuery zurückgegeben wurde), wird nur dieses Objekt zurückgegeben (im Wesentlichen ist dies keine Operation).

Wenn Sie ihm ein DOM-Element übergeben, wird eine jQuery-Liste zurückgegeben, die nur dieses Element enthält (so dass Sie jQuery-Methoden auf dieses Element anwenden können). Dies ist, was mit passiert $(document).ready() – Sie übergeben der Factory-Funktion das DOM-Element “document”, sie gibt ein jQuery-Objekt zurück, das dieses Element darstellt, und Sie verwenden die ready() -Methode dieses Objekts, um dem ready-Ereignis aller DOM-Elemente in der Liste eine Ereignisbehandlungsfunktion hinzuzufügen ( nur der eine, documentin diesem Fall).

Wenn Sie ihm eine Funktion übergeben, ist dies nur eine Abkürzung für “Führen Sie dies aus, wenn alles dazu bereit ist”. $(function() { ... }); ist äquivalent zu $(document).ready(function() { ... });

Also wurde ich diesbezüglich korrigiert und wenn Sie den ersten Kommentar lesen, gibt er einen gewissen Kontext.

jQuery(function() {
    // Document Ready
});


(function($) {
    // Now with more closure!
})(jQuery);

Ich bin mir nicht 100% sicher, aber ich denke, dass dies nur das jQuery-Objekt in die Schließung übergibt. Ich werde etwas auf Google suchen, um zu sehen, ob ich richtig oder falsch liege, und werde entsprechend aktualisieren.

BEARBEITEN:

Ich habe ziemlich recht, aber hier ist es direkt von ihrer Website:

http://docs.jquery.com/Plugins/Authoring

„Wo ist mein fantastisches Dollarzeichen, das ich kenne und liebe? Es ist immer noch da, aber um sicherzustellen, dass Ihr Plugin nicht mit anderen Bibliotheken kollidiert, die das Dollarzeichen verwenden könnten, ist es eine bewährte Methode, jQuery an eine selbstausführende Funktion zu übergeben ( Closure), die es dem Dollarzeichen zuordnet, sodass es im Rahmen seiner Ausführung nicht von einer anderen Bibliothek überschrieben werden kann.”

Mutts Benutzeravatar
Köter

Erst einmal, jQuery() ist nicht dasselbe wie $(document).ready()

$() ist eine Abkürzung für jQuery()

Und…

$(function(){ ...}); ist eine Abkürzung für $(document).ready(function(){ ... });

Daher:

jQuery(function(){ ... }) 

Funktioniert genauso wie

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

Aber…

jQuery('#foo').css("background-color", "#f00");

würde nicht genauso funktionieren wie

$(document).ready('#foo').css("background-color", "#f00");

So…

jQuery() Ist nicht das Gleiche wie $(document).ready()

  • ähm … ich bin mir ziemlich sicher, dass es ist, wenn Sie eine Funktion im Inneren übergeben?

    – George Karpenkov

    23. Juni 2011 um 13:21 Uhr

  • Ja, wenn eine Funktion mit der anonymen Funktionsverknüpfung übergeben wird, führen die beiden dasselbe aus. Aber das zu sagen jQuery() ist das gleiche wie $(document).ready() ist eine Falschaussage.

    – Köter

    23. Juni 2011 um 13:49 Uhr


  • ähm … ich bin mir ziemlich sicher, dass es ist, wenn Sie eine Funktion im Inneren übergeben?

    – George Karpenkov

    23. Juni 2011 um 13:21 Uhr

  • Ja, wenn eine Funktion mit der anonymen Funktionsverknüpfung übergeben wird, führen die beiden dasselbe aus. Aber das zu sagen jQuery() ist das gleiche wie $(document).ready() ist eine Falschaussage.

    – Köter

    23. Juni 2011 um 13:49 Uhr


1442810cookie-checkWas bedeutet jQuery(function($) { … })?

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

Privacy policy