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 08/07/2011, 16h11   #1
Invité régulier
 
Inscription : octobre 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 17
Points : 5
Points : 5
Par défaut Affichage d'une description dynamique

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.
Lyth_o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 22h14   #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 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 & 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 11/07/2011, 09h25   #3
Invité régulier
 
Inscription : octobre 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 17
Points : 5
Points : 5
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...)
Lyth_o est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h13.


 
 
 
 
Partenaires

Hébergement Web