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 qu'elle signifie. Quelqu'un peut-il m'en dire un peu plus à ce sujet ? Peut-être qu'une explication me sera utile un jour pour écrire 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 d'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 peux me tromper et peut-être que tout cela signifie la même chose. Je suis confus. Dans certains cas, este ne semble pas fonctionner dans un plugin que j'ai écrit 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.
23 votes
C'est l'heure du coucher ici, mais juste pour commencer,
(function($) { })(jQuery);
enveloppe le code de sorte que$
esjQuery
à l'intérieur de cette fermeture, même si$
signifie quelque chose d'autre en dehors de lui, généralement à la suite de$.noConflict()
par exemple. Cela garantit que votre plugin fonctionne, que ce soit ou non$ === jQuery
:)4 votes
À propos de
(function($) { })(jQuery)
vous avez dit : "Je sais qu'il étend jQuery d'une certaine manière [...]". Il est clair que vous savez no savoir puisque votre affirmation est 100% fausse. D'ailleurs, elle peut être trompeuse pour les futurs lecteurs. Jetez un coup d'oeil à ceci : stackoverflow.com/a/32550649/1636522 .0 votes
En prolongement des commentaires de @NickCraver, jquery-ui-1.7.2.custom.min.js utilise ceci par exemple : jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla........})(jQuery) ;. Je sais qu'il s'agit d'une ancienne version de jQuery UI avec un code obsolète, mais le but est de montrer que dans ce cas, ils utilisent "c" au lieu de "$".