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

JavaScript Discussion :

référence à une fonction


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut référence à une fonction
    Bonjour,

    Voilà le problème : j'ai une "classe" javascript Ligne . Cette ligne est en fait une ligne d'un tableau sensé lister des documents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var Line = function(doc, i) {
        this.document = doc;//le docuement à représenter
        this.ID = i;
        this.html = Line.getOriginalHTML();//le code html de la ligne à insérer dans le tableau
     
        this.auClic = function() {edit(this.document);}//une fonction à exécuter au clic sur la ligne
    }
    le code html de cette ligne (du type <tr>....</tr>) est initialisé avec Line.getOriginalHTML();

    Ensuite, je le modifie en fonction du document que je veux représenter.

    Le problème vient quand je veux définir un onclick sur cette ligne. J'ai un truc du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maLigne.html = $("elementAModifier", maLigne).attr("onclick",this.auClic);
    Mais avec cette syntaxe, le navigateur exécute immédiatement la fonction this.auClic . Comment lui expliquer qu'il s'agit d'une simple référence?

    Merci

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par Sharcoux Voir le message
    j'ai une "classe" javascript Ligne
    (admettons)

    Citation Envoyé par Sharcoux Voir le message
    Le problème vient quand je veux définir un onclick sur cette ligne. J'ai un truc du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maLigne.html = $("elementAModifier", maLigne).attr("onclick",this.auClic);
    Mais avec cette syntaxe, le navigateur exécute immédiatement la fonction this.auClic . Comment lui expliquer qu'il s'agit d'une simple référence?
    C'est une simple référence. Je ne sais pas pourquoi le navigateur l'exécute directement, mais ça m'a plutot l'air d'être un souci lié à la manière d'implémenter ça en jQuery... tu es sur du fonctionnement de la fonction attr ?

    Sinon : as-tu essayé la méthode "standard", avec un vrai gestionnaire d'événement ?

    edit : au fait, je vois que tu appelles Line.getOriginalHTML... à quel endroit est-elle incluse dans ton code ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut
    Merci pour ta réponse

    oui, tu auras noté les guillemets autour du mot "classe". Ca reste qd même un terme pratique.

    attr marche impeccable pour tous les autres éléments, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maLigne.html = $("elementAModifier", maLigne).attr("class",this.document.getType());
    mais pour une raison obscure, il se sent obligé d'évaluer this.auClic dès qu'elle est mentionnée...

    Tu peux m'en dire un peu plus sur la méthode "standard" ?

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par Sharcoux Voir le message
    Tu peux m'en dire un peu plus sur la méthode "standard" ?
    addEventListener / attachEvent ^^

    ...qui souvent s'utilisent à travers une mini fonction qui switche selon le navigateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function declencheur(cible, condition, effet) {
       if (cible.addEventListener) {
          cible.addEventListener(condition, effet, false);
       }
       else if (cible.attachEvent) {
          cible.attachEvent("on" + condition, effet);
       }
    }
    mais si tu fais du jQuery il doit y avoir mieux que ça non ? ^^

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut
    mais si tu fais du jQuery il doit y avoir mieux que ça non ? ^^
    Euh... Peut-être, tu penses à quel genre de truc?

    Pour les Event, je vais regarder tout ça, mais est-ce que c'est pas un peu compliqué pour quelque chose d'initialement relativement simple?

    Ah, et je kiff ton générateur de phrases ^^

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut
    MERCI !!!!
    J'ai trouvé la fonction .click de JQuery (oui, je suis débutant ^^ )
    Ca marche au poil. Merci de m'avoir mis sur la voie

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2015, 14h48
  2. [CS5] faire référence à une fonction par concaténation de variable
    Par biumiz dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 30/12/2013, 18h05
  3. [C#] Passer une référence à une fonction
    Par boujouman dans le forum C#
    Réponses: 26
    Dernier message: 16/02/2010, 08h33
  4. [Compiler] Problème de référence à une fonction
    Par Djahny dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/07/2007, 10h38
  5. Réponses: 5
    Dernier message: 06/01/2006, 11h41

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