Il s'agit d'un modèle de plugin jQuery bien structuré. Voici une version légèrement révisée avec une clarté améliorée et quelques ajustements mineurs pour les meilleures pratiques:
Les plats clés
Cet article présente un modèle de plugin jQuery robuste servant de base pour construire des plugins jQuery personnalisés. Il couvre de manière approfondie la définition du plugin, le paramètre d'option par défaut, les mises à jour des options, la gestion des événements et la gestion de l'état. Le modèle fournit un exemple pratique démontrant la création de plugin de base, l'intégration des options, la chaîneabilité, la mise en œuvre de la méthode privée / publique, la gestion des événements, l'accès aux éléments, la préservation de l'État et la destruction du plugin. L'importance de retourner l'objet jQuery pour la chaincabilité et l'utilisation de la méthode data()
de JQuery pour la gestion de l'État est mise en évidence. Ce modèle est un excellent point de départ pour votre prochain développement de plugin jQuery. Un exemple de travail se trouve à https://www.php.cn/link/a598e7d200bf02558d5534839884b7a3 .
JQuery Plugin Template Code
/*! jQuery [name] plugin @name jquery.[name].js @author [author name] ([author email] or @[author twitter]) @version 1.0 @date 01/01/2013 @category jQuery Plugin @copyright (c) 2013 [company/person name] ([company/person website]) @license Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. */ (function($) { // Default plugin options const defaultOptions = { myVar1: 1, myVar2: 2, myVar3: 3, resizeDelay: 50, // etc... }; // Plugin constructor function MyPlugin(element, options) { this.element = element; this.settings = $.extend({}, defaultOptions, options); this.resizeTimer = null; this.init(); } // Plugin methods MyPlugin.prototype = { init: function() { // Initialization logic here... if (this.settings.autoResize) { $(window).on('resize.myPlugin', this.onResize.bind(this)); } }, update: function(options) { $.extend(this.settings, options); }, onResize: function() { clearTimeout(this.resizeTimer); this.resizeTimer = setTimeout(this.resizeFunc.bind(this), this.settings.resizeDelay); }, resizeFunc: function() { // Resize handling logic here... }, destroy: function() { clearTimeout(this.resizeTimer); $(window).off('resize.myPlugin'); $(this.element).removeData('myPlugin'); // Remove plugin data } }; // jQuery plugin method $.fn.myPlugin = function(options) { return this.each(function() { const $this = $(this); let plugin = $this.data('myPlugin'); if (!plugin) { plugin = new MyPlugin(this, options); $this.data('myPlugin', plugin); } else if (typeof options === 'string' && plugin[options]) { //Call a method on the plugin plugin[options](); } else if (options) { plugin.update(options); } //Ensure chainability return this; }); }; }(jQuery));
Améliorations:
const
et let
pour un javascript plus moderne. MyPlugin
) pour une meilleure structure orientée objet. bind()
pour this
: lie explicitement le contexte this
dans les gestionnaires d'événements pour éviter les problèmes potentiels. this
pour maintenir la chaîne de la chaîne. removeData()
: Ajoute removeData()
dans la méthode destroy
pour nettoyer correctement les données du plugin. .myPlugin('destroy')
) update
: étend directement this.settings
. Ce modèle révisé est plus robuste, maintenable et suit les meilleures pratiques JavaScript modernes. N'oubliez pas de remplacer les commentaires d'espace réservé par votre logique de plugin réelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!