Czy jest następujący skrót $(document).ready
?
(function($){
//some code
})(jQuery);
Widzę, że ten wzór był często używany, ale nie mogę znaleźć żadnego odniesienia do niego. Jeśli jest to skrót $(document).ready()
, czy istnieje jakiś szczególny powód, dla którego może nie działać? W moich testach wydaje się, że zawsze strzela przed gotowym wydarzeniem.
javascript
jquery
document-ready
shorthand
Mark Brown
źródło
źródło
var somevar;
) Nie zmieni zawartości zmiennych o tej samej nazwie poza funkcjąOdpowiedzi:
Skrótem
$(document).ready(handler)
jest$(handler)
(gdziehandler
jest funkcja). Zobacz tutaj .Kod w twoim pytaniu nie ma nic wspólnego
.ready()
. Jest to raczej bezpośrednio wywoływane wyrażenie funkcyjne (IIFE) z obiektem jQuery jako argumentem. Jego celem jest ograniczenie zakresu przynajmniej$
zmiennej do własnego bloku, aby nie powodował konfliktów. Zazwyczaj widzisz wzorzec używany przez wtyczki jQuery, aby to zapewnić$ == jQuery
.źródło
iife
lub przejdź do słynnego posta na blogu Cowboy Alman . Szczegóły… sheesh.Stenogram to:
źródło
$
. Może chciałbym to dodać. Przydaje sięjQuery(function($, undefined) {});
$(document).ready(function(){ });
$
za darmo jako pierwszy argument.Prawidłowy skrót to:
Kod, który opublikowałeś…
… Tworzy anonimową funkcję i wykonuje ją natychmiast
jQuery
po przekazaniu jako argument$
. Wszystko, co skutecznie robi, to wziąć kod do funkcji i wykonać go normalnie, ponieważ$
jest to już aliasjQuery
. :REźródło
To nie jest skrót od
$(document).ready()
.Kod, który opublikowałeś, umieszcza kod wewnętrzny i czyni jQuery dostępnym
$
bez zanieczyszczania globalnej przestrzeni nazw. Można tego użyć, gdy chcesz używać zarówno prototypu, jak i jQuery na jednej stronie.Udokumentowane tutaj: http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immed natychmiast-invoked-function-expression
źródło
Te konkretne wiersze są zwykłym opakowaniem dla wtyczek jQuery:
„... aby upewnić się, że wtyczka nie koliduje z innymi bibliotekami, które mogą korzystać ze znaku dolara, najlepszą praktyką jest przekazywanie jQuery do samoczynnie wykonującej się funkcji (zamknięcia), która odwzorowuje ją na znak dolara, aby mogła” zostać nadpisane przez inną bibliotekę w zakresie jej wykonania. ”
Od http://docs.jquery.com/Plugins/Authoring
źródło
Stenogram bezpieczny dla wielu ram gotowy:
Wynika to z faktu, że jQuery nie jest jedyną strukturą używającą zmiennych
$
iundefined
źródło
(function($){ ... })(jQuery);
ready
, zamiast tego zostanie wywołane natychmiastMożna użyć jeszcze krótszego wariantu
gdzie
$
oznacza jQuery i()=>{}
jest tak zwaną „funkcją strzałki”, która dziedziczythis
po zamknięciu. (Takthis
więc prawdopodobnie będziesz miałwindow
zamiastdocument
.)źródło
A co z tym?
źródło