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 06/02/2012, 21h47   #1
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Par défaut Hover inopérant sur tbody tr

Bonsoir,

Après avoir retourné mon code dans tous les sens je me tourne vers vous.

Ce code ne lève aucune erreur mais ne remplit pas son office : surligner les tr d'un tableau html au passage du pointeur.
Le tableau HTML est chargé en Ajax.
Quand je fais une alerte sur $('#'+ tab + ' tbody').html() je ramène bien tous les tr avec les td.
J'ai le même soucis sous ie8 ou firefox, donc le navigateur n'est pas en cause.
Quand je fais
Code :
$('#'+ tab + 'tr').hover...(
là ça surligne le tr du thead.
Je ne m'explique pas pourquoi ce code ne surligne pas les tr du tbody.

Code :
1
2
3
4
5
6
7
8
9
 
$('#'+ tab + ' tbody tr').hover( 
		function(){
			$(this).addClass('dessus');
		}, 
		function(){
			$(this).removeClass('dessus');
		}
	);
Le tableau est chargé dans cette div :
Code :
1
2
 
<div id="conteneurTab"></div>
Le tableau HTML se trouve dans un script PHP :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
$t = '<table id="tableau" name="tableau" border="0">';
$t .= '<thead>';
$t .= '<tr>';
$t .= '<th>Date</th>';
$t .= '<th>N° dépo.</th>';
$t .= '<th>Nom</th>';
$t .= '<th>Raison sociale</th>';
$t .= '<th>Nb. colis</th>';
$t .= '<th>N° commande</th>';
$t .= '<th>Référence article</th>';
$t .= '</tr>';
$t .= '</thead>';
$t .= '<tbody>';
while($row = mysql_fetch_array($reqTab)) {
	$t .= '<tr>';
	$t .= '<td class="date">'.$row['date_livraison'].'</td>';
	$t .= '<td class="depo">'.$row['dea_code'].'</td>';
	$t .= '<td class="nom">'.$row['dea_nom'].'</td>';
	$t .= '<td class="rais">'.$row['raison_social'].'</td>';
	$t .= '<td class="nbCol">'.$row['nb_colis'].'</td>';
	$t .= '<td class="num_commande">'.$row['num_commande'].'</td>';
	$t .= '<td class="refArt">'.$row['reference_article'].'</td>';
	$t .= '</tr>';
}
$t .= '</tbody>';
$t .= '</table>';
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 00h17   #2
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

Si vous chargez le tableau avec une transaction AJAX il est inconnu de jQuery lors du chargement de la page. C'est donc dans la méthode "success", après avoir installé le tableau dans le DOM, qu'il faut placer votre méthode "hover".
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 06h18   #3
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Bonjour,

J'utilise la méthode load() pour charger mon tableau HTML, et je n'ai pas vu "success" dans la doc pour cette méthode.

Code :
1
2
3
4
5
 
$('#conteneurTab').load('infoTab.php #'+tab, { 'str':val }, function() {
 
		surligneTr(tab);
	});
Je recharge un frament de page pour y placer mon tableau HTML.
surligneTr(tab); : le hover se trouve là.
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 10h21   #4
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonjour

La méthode load est une forme particulière de transaction AJAX, je ne pouvais pas deviner.

Normalement, en plaçant le code du "hover" dans la fonction de rappel, il devrait fonctionner. Bien entendu, l'ID de la table doit être unique et bien contenu dans la variable tab.

Code :
1
2
3
4
5
6
7
8
9
10
$('#conteneurTab').load('infoTab.php #'+tab, { 'str':val }, function() {
$('#'+ tab + ' tbody tr').hover( 
		function(){
			$(this).addClass('dessus');
		}, 
		function(){
			$(this).removeClass('dessus');
		}
	);
});
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 10h33   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 778
Points : 35 778
On peut aussi bien utiliser la délégation d'événement :
Code :
1
2
3
$('table').on('hover', 'tr', function(){
    $(this).toggleClass('dessus');
});
ou bien (car 'hover' est déconseillé)
Code :
1
2
3
$('table').on('mouseenter mouseleave', 'tr', function(){
    $(this).toggleClass('dessus');
});
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2012, 11h09   #6
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
@Bovino : c'est la meilleure solution bien entendu. Parfois on ne voit pas clair, surtout lorsqu'on fait plusieurs choses en même temps. Bon je retourne sur Techdays TV
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h57   #7
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
Envoyé par Bovino Voir le message
...ou bien (car 'hover' est déconseillé)
Code :
1
2
3
$('table').on('mouseenter mouseleave', 'tr', function(){
    $(this).toggleClass('dessus');
});
Merci ça fonctionne impec !
arthuro45 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 01h45.


 
 
 
 
Partenaires

Hébergement Web