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 :

Affichage d'une description dynamique


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    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.

  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 : 75
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Si vous modifiez dynamiquement le contenu de la page et donc le DOM, il faut utiliser delegate : http://api.jquery.com/delegate/.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut
    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...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage d'une table dynamique
    Par *alexandre* dans le forum JSF
    Réponses: 1
    Dernier message: 02/07/2009, 10h36
  2. [MySQL] Moteur de recherche et affichage d'une description
    Par kstou2001 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/11/2007, 14h37
  3. Affichage d'une image dynamique
    Par chris81 dans le forum iReport
    Réponses: 1
    Dernier message: 11/01/2007, 11h40
  4. Réponses: 5
    Dernier message: 27/09/2006, 14h07
  5. Question sur l'affichage d'une form dynamique?
    Par Jayceblaster dans le forum Delphi
    Réponses: 1
    Dernier message: 18/09/2006, 14h36

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