it-swarm.com.de

$ (document) .ready shorthand

Ist die folgende Abkürzung für $(document).ready?

(function($){

//some code

})(jQuery);

Ich sehe, dass dieses Muster häufig verwendet wird, aber ich kann keinen Hinweis darauf finden. Wenn es eine Kurzform für $(document).ready() ist, gibt es einen bestimmten Grund, warum es möglicherweise nicht funktioniert? In meinen Tests scheint es immer vor dem fertigen Ereignis zu schießen.

231
Mark Brown

Die Abkürzung für $(document).ready(handler) ist $(handler) (wobei handler eine Funktion ist). Siehe hier .

Der Code in Ihrer Frage hat nichts mit .ready() zu tun. Es handelt sich vielmehr um einen sofort aufgerufenen Funktionsausdruck (IIFE) mit dem jQuery-Objekt als Argument. Ihr Zweck ist es, den Geltungsbereich von mindestens der $ Variable in einen eigenen Block, damit keine Konflikte entstehen. In der Regel wird das von jQuery-Plugins verwendete Muster angezeigt, um sicherzustellen, dass $ == jQuery.

243
BoltClock

Die Abkürzung lautet:

$(function() {
    // Code here
});
521
Kyle Trauberman

Die korrekte Abkürzung lautet:

$(function() {
    // this behaves as if within document.ready
});

Der Code, den Sie gepostet haben ...

(function($){

//some code

})(jQuery);

… Erstellt eine anonyme Funktion und führt sie sofort aus, wobei jQuery als Argument $ Übergeben wird. Alles, was es effektiv macht, ist, den Code innerhalb der Funktion zu nehmen und wie normal auszuführen, da $ Bereits ein Alias ​​für jQuery ist. : D

85

Dies ist keine Abkürzung für $(document).ready().

Der von Ihnen veröffentlichte Code enthält den internen Code und stellt jQuery als $ Zur Verfügung, ohne den globalen Namespace zu verschmutzen. Dies kann verwendet werden, wenn Sie Prototype und jQuery auf einer Seite verwenden möchten.

Dokumentiert hier: http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediate-invoked-function-expression

16
samy-delux

Diese spezifischen Zeilen sind der übliche Wrapper für jQuery-Plugins:

"... um sicherzustellen, dass Ihr Plugin nicht mit anderen Bibliotheken kollidiert, die möglicherweise das Dollarzeichen verwenden, ist es eine bewährte Methode, jQuery an eine selbstausführende Funktion (Closure) zu übergeben, die es dem Dollarzeichen zuordnet, damit es" nicht von einer anderen Bibliothek im Rahmen ihrer Ausführung überschrieben werden. "

(function( $ ){
  $.fn.myPlugin = function() {
    // Do your awesome plugin stuff here
  };
})( jQuery );

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

12
morgar

Die sichere Abkürzung für mehrere Frameworks lautet:

jQuery(function($, undefined) {
    // $ is guaranteed to be short for jQuery in this scope
    // undefined is provided because it could have been overwritten elsewhere
});

Dies liegt daran, dass jQuery nicht das einzige Framework ist, das die Variablen $ Und undefined verwendet

10
Timo Huovinen

Eine noch kürzere Variante ist zu verwenden

$(()=>{

});

wo $ steht für jQuery und ()=>{} heißt 'arrow function' und erbt this vom Abschluß. (Damit Sie in this wahrscheinlich window anstelle von document haben.)

1
Edvard Rejthar