É o seguinte atalho para $(document).ready
?
(function($){
//some code
})(jQuery);
Vejo esse padrão usado muito, mas não consigo encontrar nenhuma referência a ele. Se for uma abreviação $(document).ready()
, existe algum motivo específico para não funcionar? Nos meus testes, parece sempre disparar antes do evento ready.
javascript
jquery
document-ready
shorthand
Mark Brown
fonte
fonte
var somevar;
) não irá alterar o conteúdo de variáveis do mesmo nome fora da funçãoRespostas:
A abreviação de
$(document).ready(handler)
é$(handler)
(ondehandler
está uma função). Veja aqui .O código na sua pergunta não tem nada a ver
.ready()
. Em vez disso, é uma expressão de função chamada imediatamente (IIFE) com o objeto jQuery como argumento. Seu objetivo é restringir o escopo de pelo menos a$
variável ao seu próprio bloco, para que não cause conflitos. Você normalmente vê o padrão usado pelos plugins do jQuery para garantir isso$ == jQuery
.fonte
iife
ou pule para a famosa postagem no blog de Cowboy Alman . Detalhes ... sheesh.A abreviação é:
fonte
$
. Pode querer adicionar isso. É útil parajQuery(function($, undefined) {});
$(document).ready(function(){ });
$
de graça como o primeiro argumento.A abreviação correta é esta:
O código que você postou ...
… Cria uma função anônima e a executa imediatamente,
jQuery
sendo passada como arg$
. Tudo o que ele efetivamente faz é pegar o código dentro da função e executá-lo normalmente, pois$
já é um apelido parajQuery
. : Dfonte
Isso não é uma abreviação para
$(document).ready()
.O código que você postou coloca o código interno e torna o jQuery disponível
$
sem poluir o espaço para nome global. Isso pode ser usado quando você deseja usar o protótipo e o jQuery em uma página.Documentado aqui: http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immedediat-invoked-function-expression
fonte
Estas linhas específicas são o invólucro usual para plugins jQuery:
"... para garantir que seu plug-in não colide com outras bibliotecas que possam usar o cifrão, é uma boa prática passar o jQuery para uma função de execução automática (fechamento) que mapeia o cifrão para que ele possa ' ser substituído por outra biblioteca no escopo de sua execução ".
Em http://docs.jquery.com/Plugins/Authoring
fonte
A abreviação de segurança de várias estruturas para pronto é:
Isso ocorre porque jQuery não é o único quadro que utiliza o
$
eundefined
variáveisfonte
(function($){ ... })(jQuery);
ready
, mas sim imediatamenteVariante ainda mais curta é usar
onde
$
significa jQuery e()=>{}
é chamada de 'função de seta' que herdathis
do fechamento. (Para quethis
você provavelmente terá emwindow
vez dedocument
.)fonte
Que tal isso?
fonte