(function($) {
// ... code here ...
})(jQuery);
jQuery(function($) {
/// ... code here ...
});
Antworten
Zu viele Anzeigen?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.
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
});
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)