Je commence tout juste à écrire des plugins jQuery. J'ai écrit trois petits plugins mais j'ai simplement copié la ligne dans tous mes plugins sans vraiment savoir ce que cela signifie. Quelqu'un peut-il m'en dire un peu plus à ce sujet? Peut-être qu'une explication vous sera utile un jour lors de l'écriture d'un framework :)
Qu'est-ce que cela fait? (Je sais que cela étend jQuery d'une manière ou d'une autre, mais y a-t-il autre chose intéressant à savoir à ce sujet)
(function($) {
})(jQuery);
Quelle est la différence entre les deux façons suivantes d'écrire un plugin:
Type 1:
(function($) {
$.fn.jPluginName = {
},
$.fn.jPluginName.defaults = {
}
})(jQuery);
Type 2:
(function($) {
$.jPluginName = {
}
})(jQuery);
Type 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);
Je pourrais être loin d'ici et peut-être tous signifient la même chose. Je suis confus. Dans certains cas, cela ne semble pas fonctionner dans un plugin que j'écrivais en utilisant le Type 1. Jusqu'à présent, le Type 3 me semble le plus élégant mais j'aimerais aussi connaître les autres.
(function($) { })(jQuery)
vous, vous avez dit: "Je sais que cela étend jQuery en quelque sorte [...]". De toute évidence, vous ne savez pas , car votre déclaration est fausse à 100%. Au fait, cela peut être trompeur pour les futurs lecteurs. Jetez un œil à ceci: stackoverflow.com/a/32550649/1636522 .
(function($) { })(jQuery);
le code$
estjQuery
encapsulé de sorte qu'il se trouve à l' intérieur de cette fermeture, même s'il$
signifie autre chose en dehors, généralement à la suite,$.noConflict()
par exemple. Cela garantit que votre plugin fonctionne, que ce soit ou non$ === jQuery
:)