IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

instances de plugin et rattacher les paramètres


Sujet :

jQuery

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut instances de plugin et rattacher les paramètres
    j'essaye de comprendre le fonctionnement des pluggins et me heurte à un souci de paramètres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    (function($) {
    //Définition du plugin
        $.fn.monmplugin = function(options) {
     
            var defaults = {
    			param1: "truc", 
    			param2: "machin"
            };
            // mélange des paramètres fournis et des paramètres par défaut
            var opts = $.extend(defaults, options);
    tout se passe bien tant que je n'essaye pas de modifier les paramètres par defaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(document).ready(function()
    {
    	$("#myobj1, #myobj2").monplugin();
    	$("#myobj3").monplugin();
    });
    Mais lorsque je tente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(document).ready(function()
    {
    	$("#myobj1, #myobj2").monplugin();
    	$("#myobj3").myplugin({
    		param1: "bidule", 
    		param2: "chouette"
    	});
    });
    les paramètres ne sont pas rattachés à chaque instance ??
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir SpaceFrog.

    Ce point a déjà été discuté sur le forum, mais un petit rappel n'est pas inutile.

    Pour écrire un plug-in, j'utilise et je conseille la méthode A Plugin Development Pattern.

    Avec cette méthode on peut modifier les options lors du lancement du plug-in ou indépendamment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // override plugin default foreground color
    $.fn.hilight.defaults.foreground = 'blue';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // invoke plugin using new defaults
    $('.hilightDiv').hilight();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // override default by passing options to plugin method
    $('#green').hilight({
      foreground: 'green'
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Merci Daniel, la question portait plus précisément sur la différentiation des paramètres pour chacune des instances, mais je pense que ta réponse solutionne implicitement le problème vu que dans ton exemple les paramètres sont attachés en tant que propriétés à l'objet.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Pour le plug-in tout dépend du nombre d'objets à traiter. Le $(...) est toujours un array d'objet. Si l'array ne contient qu'un membre, alors on peut modifier les valeurs par défaut pour cet objet uniquement. Mais si l'array contient plusieurs objets à traiter, les paramètres par défauts, modifiés ou non, s'appliquent à tous les objets.

    Solution possible, dans les options par défaut il y a un array qui contient une liste de données d'une longueur qui correspondent à la longueur de l'array d'objets à traité. Et lors du traitement de l'array d'objets, que l'objet k prend en compte les données k.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // exemple pour 3 table
    $("table").monPlugIn({
    	tab: [
    		["données pour la table 1"],
    		["données pour la table 2"],
    		["données pour la table 3"]
    	]
    });
    Mais cette solution rend le plug-in difficile à réutiliser en dehors d'un usage bien spécifique.

    Meilleure solution, attacher les données spécifiques à l'objet à traiter. Voir Store arbitrary data associated with the matched elements.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Merci de ces précisions Daniel

    En fait je ne compte pas aller aussi loin dans les instances que de séparer les objets de $(). Je ne me suis pas bien exprimé à ce niveau là.
    Mon besoin se limite à pouvoir différencier deux instanciations $('machin') et $('bidule'), et les tests que j'avais pu réaliser me mélangeaient les paramètres entre les instances
    Mais je garde ta proposition dans mes tablettes ça peut toujours servir.
    J'entrevois dans ton exemple la possibilité de distribution de l'objet des paramètres à chacun des élements du $() par un each() ou un $(this), mais dans le second cas je ne vois pas comment rattacher l'indice de l'objet à l'indice de son array de paramètre. Je m'en vais explorer cela ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Pb avec les paramètres dans lien dynamique
    Par hackwell69 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/02/2005, 11h33
  2. Changer les paramètres régionaux
    Par STEF_1 dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2004, 15h39
  3. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  4. [Plugin] Récupérer tous les fichiers *.java d'un workspace
    Par Satch dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 02/06/2004, 12h51
  5. Réponses: 4
    Dernier message: 04/07/2003, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo