|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 17 ![]() |
Bonjour à tous,
J'ai un petit (gros) problème pour réaliser ce que je souhaite avec javascript/JQuery. Ma page se présente sous la forme d'un tableau listant un certain nombre d'articles. Lorsque l'on passe la souris sur le nom de l'article, une description s'affiche avec JQuery. Pour réaliser cet affichage de description, je me suis basé sur un toolTip que j'ai adapté du net. (jquery.tinyTips) J'ai réussi à obtenir ce que je voulais sur la page chargée par le navigateur. A savoir que j'ai bien une description qui s'affiche lorsque la souris passe par dessus le nom, et point important, même si on scroll vers le bas du tableau. L'affichage se fait toujours sur le nom. Mais voilà mon problème. Avant de réussir à faire ça, le toolTip que j'ai utilisé proposait de mettre les descriptions en position absolute en utilisant leur offset() (JQuery) par rapport au body. Cela avait pour effet d'afficher des descriptions sous le tableau lorsque l'on passait sur des articles non visibles de base. Donc pas très esthétique. J'ai donc utilisé la méthode position() pour placer les éléments dans le div contenant le tableau. Et cela a marché. (Donc j'avais bien les descriptions scrollables) Le problème lui même : J'ai également une recherche par catégorie qui peut s'effectuer. Un menu déroulant et on clique pour afficher les articles désirés. Pour afficher le résultat sans recharger la page, j'utilise AJAX et inclue mon nouveau tableau dans le div conteneur. Mais les descriptions disparaissent. Par contre, avec la méthode offset() je parviens à les afficher même après chargement par AJAX. Sauf que y'a toujours apparition au mauvais endroit =( ... Voilà. Est-ce que quelqu'un s'y connaitrait bien en offset, position pour me dire si y'a un moyen de faire ce que je veux? Sinon, une autre méthode peut être? J'imagine qu'en faisant une méthode en rechargeant entièrement la page je devrais pouvoir m'en sortir... Juste moyennement envie de tout recommencer. Merci par avance. Edit : Le problème n'est pas lié à offset() ou position() mais au div conteneur. J'obtiens le même résultat si j'utilise offset() ou position() en mettant le même div conteneur... Et pas d'affichage dans les deux cas. Le problème serait donc de savoir pourquoi il ne repère pas les éléments lorsque je change le contenu du div... Edit 2 : En fait si j'arrivais à récupérer la position de l'élément sur la page visible, sans prendre en compte la "distance scrollée" je pourrais m'en sortir. |
|
|
00
|
|
|
#2 |
![]() ![]() Daniel HagnoulÉtudiant perpétuel Inscription : février 2009 Messages : 3 221 ![]() |
Bonsoir
Si vous modifiez dynamiquement le contenu de la page et donc le DOM, il faut utiliser delegate : http://api.jquery.com/delegate/.
__________________
FAQ jQuery Mon cahier d’exercices sur jQuery & CoSi un message vous a aidé ou vous semble pertinent, votez pour lui ! ![]() |
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 17 ![]() |
Merci pour votre réponse, je vais jeter un oeil =)
Edit : J'ai essayé avec delegate mais j'ai été confronté à trop de problèmes pour adapter le code existant. Je faisais de l'Ajax puis modifiais le DOM puis faisait arriver une requête Ajax à l'intérieur. IE me retournait une erreur. J'avais bien affichage du div pour la description, mais rien ne se mettait dedans. A y repenser j'aurais pu peut être ajouter un delegate encore qui aurait résolu le problème qque part... Mais je m'en suis sorti différemment, en utilisant scrollTop() dans une détection de l'évenement scroll. Je mets à jour les positions des descriptions en fonction du scroll, ce qui revient à scroller les descriptions en même temps que le tableau. Celles-ci étant positionnées en absolute dans le body pour éviter les problèmes de changement de DOM (toutes existent au préalable, seules les bonnes sont affichées...) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com