Démo sur jsFiddle.net et code source de la demo ici.

Sources du plug-in similarelements.js sous Git.

L’idée de départ est de pouvoir piloter de manière dynamique un certain nombre d’éléments de la page qui déclenchent une même action. L’action sera déclenchée une seule fois, mais tous les éléments pourront être mis à jour. On peut exécuter de manière séparée du code pour l’élément activé et les éléments similaires non-activés qui doivent quand-même faire l’objet d’une mise à jour.

Utilisation du plug-in

Source du plug-in


ATTENTION: en dessous de cette ligne, mes notes sur le projet en cours. Si vous souhaitez utiliser ce plug-in en production, utilisez la source git et référez-vous aux notes au-dessus de cette ligne. Merci.

ATTENTION: code expérimental. Ce code fonctionne très bien mais ne peut pas forcément être réutilisé comme un plugin mais plutôt comme un pattern…

Pour être vraiment utile et ré-utilisable à la volée, ce plugin devrait donner la possibilité d’exécuter du code externe à sa source lors de son initialisation un peu comme dans enquire JS qui permet d’exécuter du code si certaines conditions prévues par le plugin (match, unmatch, setup, deferSetup, destroy) sont remplies.

Dans le cas de silimarElements.js, les conditions seraient triggeredElement, nonTriggeredElement, mais je dois encore creuser ça…

Utilisation

Dans l’exemple, j’agis sur plusieurs boutons tous présents dans la même page et qui effectuent tous la même action. Cependant, l’action prévue au click ne sera exécutée qu’une fois mais les libellés des autres boutons proposant la même action auront aussi besoin d’être mis à jour.

Ce plugin se veut (une fois terminé) assez souple pour pouvoir gérer autre chose que des boutons ou des événements click. N’importe quel event jQuery peut être utilisé en argument.

L’idée de départ est de pouvoir piloter de manière dynamique un certain nombre d’éléments de la page qui déclenchent une même action. L’action sera déclenchée une seule fois, mais tous les éléments pourront être mis à jour.

L’argument scopeWithinDOM est probablement amené à disparaître car il pourra être défini à l’initialisation du plug-in, en dehors de son code source.

Code source de la demo