Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 17h26   #1
Membre à l'essai
 
Inscription : juillet 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 61
Points : 24
Points : 24
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 :
$("#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 :
 $("#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
antoine dpt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 17h48   #2
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Bonjour,

Logiquement ton code est bon...

Pour vérifier, tu peux faire :

Code :
1
2
3
$("#ma_table").delegate("table", "click" , function(){ 
alert('coucou');
}
Et ensuite, tu ajoutes une class à ton <tr> :
Code :
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é...
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 18h02   #3
Membre à l'essai
 
Inscription : juillet 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 61
Points : 24
Points : 24
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
antoine dpt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 18h06   #4
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
AAAAh je viens de comprendre ! (Désolé ^^)

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

Code :
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 :
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 :
1
2
3
$("#ma_table").delegate("table tbody tr", "click" , function(){
alert($(this).html());
}
Si le td t'embête, la fonction .child

Code :
1
2
3
$("#ma_table").delegate("table tbody tr", "click" , function(){
alert($(this).child('td').html());
}
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h15.


 
 
 
 
Partenaires

Hébergement Web