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 :

utilisation de delegate sur une table


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de antoine dpt
    Inscrit en
    Juillet 2004
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 64
    Par défaut utilisation de delegate sur une table
    salut les amis,

    voici le probleme. J'ai un dropdown list avec <select> qui permet a un utlisateur de choisir un pays. Quand le pays est choisi, j'utilise je capture l'event change du select pour faire un requete au serveur pour me donner une table avec des gens de ce pays (id, nom, prenon, ville). Cette table revient vers la page et j'utilise load pour charger les donnees dans une <div id="ma_table>. Je fais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#ma_table").load("url.....")
    ca marche super et ma table marche super.

    le probleme c'est que maintenant je veux que quand on click sur une ligne de la table, on puisse me dire "vous avez cliquer la ligne avec le id xxxx". J'ai utilise la fonction delegate qui marche bien en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $("#ma_table").delegate("table tbody tr", "click" , function(){ //blablabal}
    ceci dit je n'arrive pas a obtenir la valeur pour cette ligne la, c'est a dire recupere la valeur pour la ligne cliquer.

    en fait le challenge pourrait revenir a me dire "comment faire pour creer un event sur une table pas encore creee au chargement qui dira "vous avez cliquer sur la ligne de jean dupont - id 2323"?"

    si vous pouvez repondre a ca, eh bien chapeau les gars. moi je seche

  2. #2
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Bonjour,

    Logiquement ton code est bon...

    Pour vérifier, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#ma_table").delegate("table", "click" , function(){ 
    alert('coucou');
    }
    Et ensuite, tu ajoutes une class à ton <tr> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#ma_table").delegate(".tr_cliquable", "click" , function(){ 
    alert('coucou');
    }
    Si ça marche avec la class, je te conseille de le laisser.

    Il se peut que le "table tbody tr" ne soit pas apprécié...

  3. #3
    Membre confirmé Avatar de antoine dpt
    Inscrit en
    Juillet 2004
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 64
    Par défaut
    merci pour ta reponse

    oui le code marche mais moi je veux que jquery soit assez malin pour me dire sur quelle <tr> on a cliquer.

    par exemple si on clique sur la ligne de jean dupont le code retourne "vous avez cliquer sur la ligne de jean dupont". Je sais pas comment faire cela parce que par example je sais meme pas ce que le $this va representer. Est ce qu'il represente le point du DOM ou j'ai attache ma delegate function (c'est a dire #ma_table) ou est ce qu'il sera assez malin pour voir qu'il s'agit du <tr>???? aucune idee.

    basiquement, comment faire pour avoir un code qui sort "vous avez cliquez sur la ligne de jean dupont".

    merci

  4. #4
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    AAAAh je viens de comprendre ! (Désolé ^^)

    Le $(this) va te retourner ton tr car cela revient à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $('table tbody tr').click(function(){
    }
    Après tu peux gérer le truc pour mettre l'id de ta base dans le tr...

    Dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#ma_table").delegate("table tbody tr", "click" , function(){
    alert($(this).attr('id'));
    }
    Sinon pour afficher le contenu, si c'est bien fait y'a un td dedans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#ma_table").delegate("table tbody tr", "click" , function(){
    alert($(this).html());
    }
    Si le td t'embête, la fonction .child

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#ma_table").delegate("table tbody tr", "click" , function(){
    alert($(this).child('td').html());
    }

Discussions similaires

  1. Réponses: 11
    Dernier message: 16/05/2011, 14h36
  2. [JTable] Raccourci clavier sur une Table
    Par sylvain_2020 dans le forum Composants
    Réponses: 5
    Dernier message: 05/07/2007, 09h01
  3. Pooling sur une table SQL
    Par Jean-Jacques Engels dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/11/2004, 23h10
  4. Recordcount sur une table filtrée
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/03/2004, 00h05
  5. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05

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