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 :

toggleClass lent sur ie8


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    Par défaut toggleClass lent sur ie8
    Bonjour

    Sous firefox ce code surligne rapidement un tr, mais sous ie8 c'est lent et le surlignement prend du retard entre chaque ligne.

    Seriez-vous pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $('#'+tab).on('mouseenter mouseleave', 'tbody tr', function(){
        $(this).toggleClass(classe);
    });
    le code est appelé dans ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function chargerTableau(tab)
    {
    	$('#conteneurTab').load('infoTab.php #'+tab, function(){
                   surligneTr(tab,'dessus');
            });
    }

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    Ba c'est souvent un probleme sous IE (généralement plus sous IE 6). Essaye peut etre avec les evenements mouseover/mouseout a la place de mouseenter/mouseleave, mais je ne suis pas sur que ce soit plus rapide.

    Perso en entreprise j'étais passé directement par le CSS, ca allait bcp plus vite que le JavaScript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    table tbody tr td {
    	background-color:#FFF;
    }
     
    table tbody tr:hover td {
    	background-color:#8DBDD8;
    }
    Un truc comme ca te permet de changer facilement et plus rapidement (au moins pour IE) un tr lorsque la souris passe dessus.

  3. #3
    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
    Billets dans le blog
    20
    Par défaut
    Chaque modification de style provoque un repaint ou un reflow.
    Les tables HTML sont les éléments les plus lents à afficher pour le navigateur (spécialement pour IE) du fait, notamment, que leur structure "théorique" est rarement respectée et que les différentes dimensions sont souvent laissées libres : le navigateur doit alors tout calculer avant d'afficher.
    Du coup, modifier un td au survol sur une grosse table, c'est assez peu optimisé...

    Pour en savoir un peu plus : Reflows & Repaints: CSS Performance making your JavaScript slow? et plus spécialement Avoid tables for layout

    Voir aussi l'extension pour Firebug Firebug Paint Events qui te donnera une idée de l'ampleur de la chose !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre éclairé 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
    Par défaut
    Je ne sais pas encore comment je vais optimiser ça, mais je viens de tester mon tableau HTML sous ie8 avec ietester et c'est beaucoup plus fluide

    J'ai pas fini de chercher...

  5. #5
    Membre éclairé 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
    Par défaut
    Perso en entreprise j'étais passé directement par le CSS, ca allait bcp plus vite que le JavaScript :
    Effectivement j'ai gagné un peu en réactivé sur les lignes, ça devient tolèrable.

    et que les différentes dimensions sont souvent laissées libres : le navigateur doit alors tout calculer avant d'afficher.
    Tu suggères de mettre des dimensions au td (width,height) ?

    Il serait préférable de passer à autre chose que des Table pour les données tabulaires ?

Discussions similaires

  1. Connexion lente sur certaines pages web
    Par stardeus dans le forum Debian
    Réponses: 1
    Dernier message: 12/09/2007, 20h26
  2. Faire apparaître un menu est lent sur IE6
    Par SlashOwnsU dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/09/2006, 17h12
  3. Réponses: 3
    Dernier message: 18/05/2006, 13h56
  4. Update trés lent sur une grosse table
    Par neo.51 dans le forum Oracle
    Réponses: 21
    Dernier message: 14/12/2005, 11h06
  5. BDE lent sur XP PRO
    Par Daniel Nespoulous dans le forum Bases de données
    Réponses: 4
    Dernier message: 11/06/2004, 14h12

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