4 Stimmen

Was ist der Unterschied bei der Ausführung von Code, wenn er auf diese Weise verpackt ist?

(function($) {
// ... code here ...
})(jQuery);

jQuery(function($) {
/// ... code here ...
});

10voto

Der erste Aufruf erfolgt sofort, der zweite, wenn das DOM geladen und bereit ist.

3voto

jbrookover Punkte 5052

Im ersten Fall wird jQuery direkt übergeben und umgewidmet, um die lokale Variable $ in der Methode zu verwenden. Im ersten Fall, $ wird wie jQuery handeln, wie Sie es gewohnt sind. Dies wird oft für Plugins verwendet, die nicht davon ausgehen, dass $ für jQuery steht (da jQuery im Konfliktfall auf die Verwendung von $ verzichten kann).

Im zweiten Fall übernimmt jQuery den Konfliktschutz für Sie und bietet Ihnen eine lokale Darstellung von $, die nicht mit anderen Bibliotheken in Konflikt gerät.

Der erste wird auch aufgerufen, wenn er geparst wird, wie von anderen erwähnt. Die führende Klammer ist eine Konvention, die andeuten soll, dass auf die Funktionsdefinition selbst ein Satz offener/schließender Klammern folgt - der sofort ausgeführt wird. Die zweite wird beim Laden der Seite aufgerufen.

1voto

Thomas Hunter II Punkte 4904

Die erste wird verwendet, um das $-Symbol zu stehlen, wenn man es mit mehreren Frameworks zu tun hat, und wird auch verwendet, um Variablendeklarationen lokal zu machen (was das letzte Beispiel auch tut). Das letzte Beispiel wird für die Ausführung von Skripten beim Laden der Seite verwendet, kann aber sauberer geschrieben werden als:

$(function() {
/// code
});

1voto

GmonC Punkte 10923

Consulte Verwendung von Jquery mit anderen Bibliotheken Dokumente auch.

jQuery(function($) {});

Wenn Sie jQuery vor anderen Bibliotheken einbinden, können Sie "jQuery" verwenden, wenn Sie etwas mit jQuery arbeiten, und die "$" ist auch die Abkürzung für die andere Bibliothek. Es besteht keine Notwendigkeit für Überschreibung der $-Funktion durch den Aufruf von "jQuery.noConflict()" zu überschreiben.

<html>
 <head>
   <script src="jquery.js"></script>
   <script src="prototype.js"></script>
   <script>
     // Use jQuery via jQuery(...)
     jQuery(document).ready(function(){
       jQuery("div").hide();
     });

(function($) {})(jQuery);

Verwenden Sie die folgende Technik, die erlaubt es Ihnen, $ innerhalb eines Blocks zu verwenden Code-Blocks zu verwenden, ohne permanent $ zu überschreiben:

(function($) { /* etwas Code, der $ verwendet */ })(jQuery)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X