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 :

factoriser une attribution de click()


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut factoriser une attribution de click()
    Bonjour

    problème de débutant
    le code dans les 2 fonctions est identique, mais je l’appelle depuis différente class.

    est il possible de mettre plusieurs écouteur sur la même fonction ?
    cela doit être tout con, mais j'ai pas trouvé

    grand merci d'avance
    Xavier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    				$('.foto').find("img").click(function()	
    					{
    					code......etc......
    						});
    					});
    				$('.photo').find("img").click(function()	
    					{
    					code......etc......
    						});
    					});

  2. #2
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('.foto, .photo').find("img").click(function()	
    					{
    					code......etc......
    						});
    					});
    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 !

  3. #3
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('.foto, .photo').find("img").click(function()	
    					{
    					code......etc......
    						});
    					});
    Ça ne va pas générer une erreur ?

    Tu voulais peut-être écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $('.foto, .photo').find("img").click(function(){
        (function(){/*code 1*/})();
        (function(){/*code 2*/})();
        (function(){/*code 3*/})();
        etc...
    });
    Mais le plus simple et le plus clair est tout de même de déclarer ces fonctions en dehors, et de les appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        function funA(){/*code*/}
        function funB(){/*code*/}
        function funC(){/*code*/}
     
        $('.foto, .photo').find("img").click(funA, funB, funC);
    Si tu as besoin d'arguments dans l'une des fonctions, il faut toutes les placer dans une fonction anonyme, et permettre à la fonction anonyme de passer le paramètre "event" envoyé par click :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        function funA(event){alert(event.srcElement;}
        function funB(str){alert(str);}
        function funC(){/*code*/}
     
        $('.foto, .photo').find("img").click(function(e){
            funA(e); funB("yoyo"); funC();
        });
    Note qu'avec la méthode précédent "click(funA,funB,funC)", le paramètre "event" est passé automatiquement si la fonction prend un paramètre.


    Edit : oups, j'avais mal compris la question. Je croyais que tu voulais passer plusieurs fonctions à un évènement. Je laisse quand même, si tu es débutant ça t'aidera peut-être.

  4. #4
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Merci de tester avant de mettre en doute ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('.class1, .class2').click( function(){ alert($(this).text()) }) 
    	})
     
    <div class="class1">coucou</div>
    <div class="class2">hello</div>
    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 !

  5. #5
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Par défaut
    super

    MERCI SpaceFrog

  6. #6
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Merci de tester avant de mettre en doute ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('.class1, .class2').click( function(){ alert($(this).text()) }) 
    	})
     
    <div class="class1">coucou</div>
    <div class="class2">hello</div>
    Il me génère une erreur, et c'est normal.

    Par contre, si tu enlèves la ligne 2 et que tu rajoutes le point-virgule, ça marche nickel


    Il en va de même pour ton exemple initial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('.foto, .photo').find("img").click(function()	
    					{
    					code......etc......
    						});
    					});
    Sans la ligne 5, aucun soucis.

    Ou bien c'est moi qui ne sait plus compter le nombre d'accolades ouvrantes et fermantes ? (ce qui serait inquiétant)

  7. #7
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    c'est un extrait du code global ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <!DOCTYPE html>
    <html>
    <head>
    <script type='text/javascript' src='http://code.jquery.com/jquery-latest.min.js'></script>
    <script type="text/javascript">
    	$(function(){
    $('.class1, .class2').click( function(){ alert($(this).text()) }) 
    	})
    </script>
    </head>
    <body> 
    <div class="class1">coucou</div>
    <div class="class2">hello</div>
    </body>
    </html>
    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. Accéder à une attribut privé
    Par amazircool dans le forum Langage
    Réponses: 9
    Dernier message: 05/10/2007, 16h51
  2. afficher une image au click
    Par Katachana dans le forum EDT/SwingWorker
    Réponses: 4
    Dernier message: 04/10/2007, 00h06
  3. valeur par défaut d'une attribut date
    Par didi dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 10/08/2007, 16h11
  4. lancer une application par click sur son document
    Par philippe V dans le forum Visual C++
    Réponses: 3
    Dernier message: 14/12/2006, 17h12
  5. Envoi d'une action après click dans un select
    Par sutailga dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/06/2006, 20h29

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