J'ai écrit un plugin jQuery assez basique qui prend une liste non ordonnée et crée une belle liste multi-sélectionnable. L'appeler « multiSelector », la déclaration du plugin ressemble à ceci:Comment écrire une méthode pour un plugin jQuery?
jQuery.fn.multiSelector = function(options) {
// plugin code
}
Le plugin fonctionne en fait sur un div contenant une liste non ordonnée à l'intérieur (pour des raisons de CSS, entre autres), donc une utilisation typique de ce look plugin comme ceci:
var $listDiv = $('#listDiv') // div that contains unordered list
$listDiv.multiSelector();
Il fonctionne très bien, donc je ne suis pas avoir de problèmes créant le plugin. Cependant, ce que je voudrais faire maintenant, c'est fournir à l'utilisateur un moyen d'obtenir tous les éléments sélectionnés de leur liste. J'ai regardé en ligne comment créer des fonctions à partir de ce plugin, et je ne peux pas vraiment trouver de moyens de l'étendre avec une fonction.
Ce qui serait bien est de faire quelque chose comme ça, où « itemArray » est un tableau de chaînes en fonction de la liste id de l'article (ou quelque chose):
var itemArray = $listDiv.multiSelector().getSelected();
Je réalise ma logique est probablement beaucoup ici off, mais je cherche juste quelques conseils sur la façon d'accomplir cela. Peut-être que j'ai besoin d'écrire une nouvelle fonction jQuery pour gérer cette tâche spécifique, ou peut-être que je peux encore l'amadouer sur ce plugin multiSelector en quelque sorte. Toute aide serait appréciée.
Merci.
En fait, * la plupart des plugins retournent les éléments dom en cours de modification ('# listdiv' dans l'exemple de l'OP). Cela permet le chaînage des fonctions. Votre approche est toujours valide. – Joel
@Joel - Désolé si je n'étais pas clair. Oui, le plugin doit renvoyer jQuery, sauf s'il est passé un nom de méthode à exécuter. Donc, sans paramètres ou quand un objet options est passé, il fonctionne comme d'habitude et configure le plugin sur les éléments jQuery transmis. Quand un nom de méthode est passé sur un ensemble d'éléments qui ont déjà été configurés en utilisant le plugin, il exécute le méthode et renvoie les résultats de la méthode. – tvanfosson
@tvanfosson, merci pour la réponse. C'est probablement l'approche que j'utiliserai. Mais je me demande s'il devrait y avoir un 'else' après le 'if (typeof options ===" string ") {', juste pour gérer le reste de la logique dans le cas 'options' est en fait une liste de options et non l'appel de la méthode. Qu'est-ce que tu penses? –