Estoy comenzando a escribir complementos de jQuery. Escribí tres pequeños complementos, pero simplemente he copiado la línea en todos mis complementos sin saber realmente lo que significa. ¿Alguien puede contarme un poco más sobre esto? Tal vez una explicación sea útil algún día al escribir un marco :)
¿Qué hace esto? (Sé que extiende jQuery de alguna manera, pero ¿hay algo más interesante que saber sobre esto?)
(function($) {
})(jQuery);
¿Cuál es la diferencia entre las siguientes dos formas de escribir un complemento?
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);
Podría estar muy lejos aquí y tal vez todos significan lo mismo. Estoy confundido. En algunos casos, esto no parece estar funcionando en un complemento que estaba escribiendo usando el Tipo 1. Hasta ahora, el Tipo 3 me parece el más elegante, pero también me gustaría saber sobre los demás.
(function($) { })(jQuery)
usted dijo: "Sé que extiende jQuery de alguna manera [...]". Claramente no lo sabe, ya que su declaración es 100% falsa. Por cierto, puede ser engañoso para futuros lectores. Eche un vistazo a esto: stackoverflow.com/a/32550649/1636522 .
(function($) { })(jQuery);
envuelve el código para que$
estéjQuery
dentro de ese cierre, incluso si$
significa algo más fuera de él, generalmente como resultado de,$.noConflict()
por ejemplo. Esto garantiza que su complemento funcione, independientemente de si$ === jQuery
:)