Ho appena iniziato a scrivere plugin jQuery. Ho scritto tre piccoli plugin, ma ho semplicemente copiato la linea in tutti i miei plugin senza sapere cosa significhi. Qualcuno può dirmi qualcosa in più su questi? Forse una spiegazione tornerà utile un giorno quando si scrive un framework :)
Cosa fa questo? (So che estende jQuery in qualche modo, ma c'è qualcos'altro di interessante da sapere su questo)
(function($) {
})(jQuery);
Qual è la differenza tra i seguenti due modi di scrivere un 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);
Potrei essere lontano e forse significare tutti la stessa cosa. Sono confuso. In alcuni casi, questo non sembra funzionare in un plugin che stavo scrivendo usando il Tipo 1. Finora, il Tipo 3 mi sembra il più elegante, ma mi piacerebbe sapere anche degli altri.
(function($) { })(jQuery)
hai detto: "So che estende jQuery in qualche modo [...]". Chiaramente non lo sai perché la tua affermazione è falsa al 100%. A proposito, può essere fuorviante per i futuri lettori. Dai un'occhiata a questo: stackoverflow.com/a/32550649/1636522 .
(function($) { })(jQuery);
racchiude il codice in modo che$
siajQuery
all'interno di quella chiusura, anche se$
significa qualcos'altro al di fuori di esso, di solito come risultato,$.noConflict()
ad esempio. Questo assicura che il tuo plug-in funzioni, anche se$ === jQuery
:)