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 :

Hover inopérant sur tbody tr


Sujet :

jQuery

  1. #1
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#'+ 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="conteneurTab"></div>
    Le tableau HTML se trouve dans un script PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>';

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    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".

  3. #3
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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à.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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');
    		}
    	);
    });

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    On peut aussi bien utiliser la délégation d'événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('table').on('hover', 'tr', function(){
        $(this).toggleClass('dessus');
    });
    ou bien (car 'hover' est déconseillé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('table').on('mouseenter mouseleave', 'tr', function(){
        $(this).toggleClass('dessus');
    });

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    @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

  7. #7
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Citation Envoyé par Bovino Voir le message
    ...ou bien (car 'hover' est déconseillé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('table').on('mouseenter mouseleave', 'tr', function(){
        $(this).toggleClass('dessus');
    });
    Merci ça fonctionne impec !

Discussions similaires

  1. Application d'un hover css sur un asp:ImageButton
    Par stefsas dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/05/2010, 16h24
  2. Clic droit de souris inopérant sur 10g
    Par begal dans le forum Forms
    Réponses: 2
    Dernier message: 05/05/2008, 12h23
  3. Réseau sans fil inopérant sur un poste
    Par host22 dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 25/04/2007, 18h24
  4. scrollTop sur tbody
    Par TheaterOfThought dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/02/2006, 11h20
  5. Return false inopérent sur un "onclick"
    Par El Riiico dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/01/2006, 11h47

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