Was bedeutet $ (function () {}); machen?

207

Manchmal mache ich eine Funktion und rufe die Funktion später auf.

Beispiel:

function example { alert('example'); }
example(); // <-- Then call it later

Irgendwie können einige Funktionen nicht aufgerufen werden. Ich muss diese Funktionen im Inneren aufrufen:

$(function() { });

Was tun $(function() {});und (function() { });bedeuten und was ist der Unterschied / Zweck dieser?

jwchang
quelle

Antworten:

306
$(function() { ... });

ist nur jQuery Abkürzung für

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

Sie soll (unter anderem) sicherstellen, dass Ihre Funktion aufgerufen wird, sobald alle DOM-Elemente der Seite zur Verwendung bereit sind.

Ich glaube jedoch nicht, dass dies das Problem ist, das Sie haben. Können Sie klarstellen, was Sie unter "Irgendwie können einige Funktionen nicht aufgerufen werden und ich muss diese Funktion im Inneren aufrufen" verstehen. Vielleicht einen Code posten, um zu zeigen, was nicht wie erwartet funktioniert?

Bearbeiten: Beim erneuten Lesen Ihrer Frage kann es sein, dass Ihre Funktion ausgeführt wird, bevor die Seite vollständig geladen wurde, und daher nicht ordnungsgemäß ausgeführt wird. Wenn Sie es in $ (Funktion) setzen, wird das tatsächlich behoben!

Russ Clarke
quelle
2
Was ist, wenn $ (function () {}); ist schon in $ (document) .ready ()?
Jwchang
Die Funktion funktioniert nicht ohne $ (function (), obwohl sie bereits in $ (document) ready () enthalten ist.
jwchang
Gute Frage! Ich glaube, es sollte einfach funktionieren, da jQuery weiß, dass Sie am richtigen Ort sind, aber es ist sicherlich irrelevant. Wenn Sie sich in .ready () befinden, können Sie Ihre Funktion einfach wie gewohnt aufrufen. Wenn es nicht funktioniert, dann poste ein Beispiel oder noch besser - versuche eine Geige als jsfiddle.net zu machen.
Russ Clarke
4
@JeongWooChang Mach es so (function () { ... })();. Sie müssen hinzufügen (), um Ihre Funktion aufzurufen.
Šime Vidas
3
"Erfahrene Entwickler verwenden manchmal die Abkürzung $()für $( document ).ready(). Wenn Sie Code schreiben, den Personen mit jQuery möglicherweise nicht sehen, ist es am besten, die Langform zu verwenden." - learn.jquery.com
thdoan
15

Das Folgende ist ein jQuery-Funktionsaufruf:

$(...);

Welches ist die "jQuery-Funktion". $ist eine Funktion, und $(...)rufen Sie diese Funktion auf.

Der erste Parameter, den Sie angegeben haben, ist der folgende:

function() {}

Der Parameter ist eine von Ihnen angegebene Funktion, und die $Funktion ruft die angegebene Methode auf, wenn das Laden des DOM abgeschlossen ist.

cwharris
quelle
5

Ich denke, Sie verwechseln möglicherweise Javascript mit jQuery-Methoden. Vanille oder einfaches Javascript ist so etwas wie:

function example() {
}

Eine Funktion dieser Art kann jederzeit und überall aufgerufen werden.

jQuery (eine auf Javascript basierende Bibliothek) verfügt über integrierte Funktionen, für die das DOM im Allgemeinen vollständig gerendert werden muss, bevor es aufgerufen wird. Die Syntax für diesen Vorgang lautet:

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

Daher wird innerhalb dieser Methode eine jQuery-Funktion aufgerufen, der im Allgemeinen $das Wort oder vorangestellt jQueryist.

$(document).ready(function() {        
    // Assign all list items on the page to be the  color red.  
    //      This does not work until AFTER the entire DOM is "ready", hence the $(document).ready()
    $('li').css('color', 'red');   
});

Der Pseudocode für diesen Block lautet:

Wenn das Dokumentobjektmodell $(document)fertig ist .ready(), rufen Sie die folgende Funktion auf function() { }. Überprüfen Sie in dieser Funktion alle <li>Seiten auf der Seite $('li')und setzen Sie die CSS-Eigenschaft "color" mit der jQuery-Methode .CSS () auf den Wert "red"..css('color', 'red');

Terry
quelle
2

Dies ist eine Verknüpfung für $(document).ready(), die ausgeführt wird, wenn der Browser das Laden der Seite abgeschlossen hat (dh hier "wenn das DOM verfügbar ist"). Siehe http://www.learningjquery.com/2006/09/introducing-document-ready . Wenn Sie versuchen anzurufen, example()bevor der Browser das Laden der Seite abgeschlossen hat, funktioniert dies möglicherweise nicht.

imm
quelle
1
"Laden der Seite beendet" ist ungenau und irreführend.
Yahel