2010-07-20 5 views
1

Je sais qu'il y a beaucoup de questions à propos de jQuery slideToggle "scintillement" mais je n'en ai vu aucune qui aborde spécifiquement ce scintillement lors du chargement de la page.jQuery slideToggle "flicker" au chargement de la page

Cliquez sur here pour l'exemple de travail.

Si vous cliquez sur Actualiser ou cliquez sur une autre page fiche technique (selon la fiche technique & section Info produit), lorsque la page se charge, le div caché « clignote » le contenu élargi puis rapidement effondrements. Je remarque cela dans Firefox, pas tellement dans IE ou Chrome. Que puis-je faire pour éviter cela? Est-ce que cela dépend de la vitesse de chargement de la page?

Veuillez également excuser le code tabulé cauchemardesque. J'ai hérité cela d'un développeur précédent. Nous prévoyons de revenir en arrière et de corriger cela dans une phase ultérieure, mais je me demande s'il y a une solution rapide à ce problème maintenant.

Merci!

+0

J'ai traité quelque chose de similaire à la façon lonut dit et il fonctionne habituellement. Juste pour info, je suis sur un réseau moyen-lent et il ne scintille pas dans Firefox 3.6, ou Opera 10.6. Il le fait dans IE6 (mais qui s'en soucie). – Zacho

Répondre

2

Peut-être display:none pour des éléments comme #mover2? (bien sûr, cela signifie aussi aucune dégradation gracieuse)

EDIT (une réponse à une autre question) Pour éviter d'utiliser #id, # ID1, # ID2 dans votre css, vous pouvez simplement ajouter une classe supplémentaire à ces divs , comme hideThis. Puis, en CSS, vous pouvez simplement ajouter: .hideThis {display: none; }

0

Cela a à voir avec la latence du javascript dans Firefox sur le chargement je crois. Comme l'a suggéré Ionut Staicu, je me suis penché sur ce problème en les cachant dans le .CSS qui est probablement plus rapide que la méthode hide.

Je voudrais aussi essayer $('[id=^mover]').hide(); au lieu de tous les individuels comme $('#mover1').hide();

+0

le flick sera là parce que la chose '.hide()' est appelée AFTER dom est prêt. Donc, vous devez le cacher par css :) –

+0

Vous êtes si effrayant serviable! Puis-je choisir votre cerveau une fois de plus? Existe-t-il un raccourci pratique pour taper # mover1, # mover2, # mover3 ... {display: none;} plutôt que de taper chaque sélecteur individuellement? Sur une page, j'ai jusqu'à 20 de ces choses. Merci beaucoup! –

+0

$ ('[id =^mover]'). Hide(); est le selecter que vous demandez. Il indique chaque attribut "id" qui commence par "mover". Vous pouvez également les mettre comme $ ("mover1, mover2, mover3"). Hide(); au lieu de ceux séparés (c'est le sélecteur jQuery) pas sûr pour le CSS autre que ce que vous avez. –