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 :

Passage de paramètres sur un onclick


Sujet :

jQuery

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 32
    Par défaut Passage de paramètres sur un onclick
    Bonjour,

    mon problème est simple, je cherche un moyen de passer des paramètres sur un évènement onclick via une fonction dans mon jquery.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <div onclick="showComGraph2('date1', 'data2');" >
    Le problème dans le jquery, la fonction ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type="text/javascript">
    $(function(){
       function showComGraph2(param1, param2)  { console.log(param1); }
    });
     // retour du console log : 	ReferenceError: showComGraph2 is not defined
    </script>
    Si je place le code de ma fonction en dehors du jQuery, cela fonctionne mais du coup je ne suis plus dans le contexte jQuery...

    Alors j'ai cherché et trouvé des solutions, comme par exemple :
    - soit passer mes paramètres via les attributs du type data-param1="test" data-param2="test2"
    - ou bien passer par un plugin metadata.
    (source : http://www.developpez.net/forums/d84...iques-onclick/

    Mais ce que je voudrais comprendre, c'est pourquoi cela n'est pas possible 'nativement' dans jQuery (sans avoir a passer par l'écriture data-parm....) ?
    Existe-t-il d'autres solutions ?
    Cela me parait être presque la base, on utilise beaucoup les fonctions et les passages de paramètres...
    Quelque chose m'échappe... non ?
    Pourquoi perd t'on le contexte jQuery avec un onclick="maFonction('param')" ?

    Si quelqu'un peut m'éclairer sur le sujet , ce serait tip top !
    Merci par avance
    David

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 561
    Par défaut
    pour bien séparer les différentes parties, il vaut mieux ne pas mettre le code JavaScript dans le code HTML et le mettre dans le fichier ".js"
    de plus avec jQuery la gestion des évènement se fait habituellement dans ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(function(){
        $("#divACibler").click(function (e) {
            console.log(e);
        });
    });
    donc pour récupérer un paramètre lié à cet élément "div", le plus pratique est d'utiliser un "data-..."

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    Citation Envoyé par zadoner33
    Pourquoi perd t'on le contexte jQuery avec un onclick="maFonction('param')" ?
    simplement parce que ta fonction est dans une « closure » (fermeture en français), donc non accessible à l'extérieure de celle-ci, jQuery n'y est pour rien.

    Suit le conseil de mathieu

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 32
    Par défaut
    Ok, ça marche, merci beaucoup pour vos réponses et conseils.
    Cdlt,
    David

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Citation Envoyé par zadoner33
    Pourquoi perd t'on le contexte jQuery avec un onclick="maFonction('param')" ?
    Si quelqu'un peut m'éclairer sur le sujet , ce serait tip top !
    pour que ta fonction soit reconnue dans le context de jQuery tu peux essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $(function(){
     
     showComGraph2= function (param1, param2)  {
          console.log(param1+","+param2); 
      }
     
    });
    puis le html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div onclick="showComGraph2('parametre 1','parametre 2')"></div>

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

Discussions similaires

  1. [XL-2013] Passage de paramètre sur connexion SQL
    Par PrinceCorwin dans le forum Excel
    Réponses: 0
    Dernier message: 11/06/2014, 10h15
  2. Paramètre sur fonction onclick
    Par Godard dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/09/2010, 14h02
  3. Réponses: 26
    Dernier message: 20/01/2010, 10h38
  4. Réponses: 4
    Dernier message: 31/08/2007, 00h54
  5. Passage de paramètre sur un événement
    Par GPZ{^_^} dans le forum Flash
    Réponses: 5
    Dernier message: 14/05/2007, 12h51

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