Estou apenas começando a escrever plugins jQuery. Escrevi três plugins pequenos, mas simplesmente copiei a linha em todos os meus plugins sem realmente saber o que isso significa. Alguém pode me falar um pouco mais sobre isso? Talvez uma explicação seja útil algum dia ao escrever uma estrutura :)
O que isso faz? (Eu sei que estende o jQuery de alguma forma, mas há mais alguma coisa interessante para saber sobre isso)
(function($) {
})(jQuery);
Qual é a diferença entre as duas maneiras a seguir de escrever um plugin:
Tipo 1:
(function($) {
$.fn.jPluginName = {
},
$.fn.jPluginName.defaults = {
}
})(jQuery);
Tipo 2:
(function($) {
$.jPluginName = {
}
})(jQuery);
Tipo 3:
(function($){
//Attach this new method to jQuery
$.fn.extend({
var defaults = {
}
var options = $.extend(defaults, options);
//This is where you write your plugin's name
pluginname: function() {
//Iterate over the current set of matched elements
return this.each(function() {
//code to be inserted here
});
}
});
})(jQuery);
Eu poderia estar longe daqui e talvez tudo signifique a mesma coisa. Estou confuso. Em alguns casos, isso não parece estar funcionando em um plug-in que eu estava escrevendo usando o Tipo 1. Até agora, o Tipo 3 parece ser o mais elegante para mim, mas eu gostaria de saber sobre os outros também.
(function($) { })(jQuery)
você disse: "Eu sei que isso estende o jQuery de alguma forma [...]". Claramente você não sabe, pois sua afirmação é 100% falsa. A propósito, pode ser enganoso para futuros leitores. Dê uma olhada no seguinte: stackoverflow.com/a/32550649/1636522 .
(function($) { })(jQuery);
agrupa o código para que$
fiquejQuery
dentro desse fechamento, mesmo que$
signifique algo fora dele, geralmente como resultado,$.noConflict()
por exemplo. Isso garante que seu plug-in funcione, independentemente de ser$ === jQuery
:) :)