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 :

Comment savoir la position d'un élément dans la chaîne DOM ?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut Comment savoir la position d'un élément dans la chaîne DOM ?
    Bonjour,

    Soit un menu qui contient parfois des sous-sous-sous... menus avant d'arriver à l'option finale, au point qu'à partir d'un certain niveau, certains libellés - en plus exagérément long mais je n'y peux rien pour le moment - sortent de l'écran par la droite, le dernier niveau n'étant même plus visible et donc inaccessible !

    Dans ma feuille de style, j'ai pour le moment ce genre de chose qui met le libellé long sur plusieurs lignes à partir du 4ème niveau de menu :
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #custommenu .yui3-menu .yui3-menu-content li li li li a
    {
    	white-space: normal;
    	width: auto;
    }
    Mais avec ce code, l'un des sous-menus déplié sort de l'écran par en bas !

    Pour pallier à ça, j'essaie de faire un programme, de préférence en JQuery, qui tronquerait les libellés trop long à 50 caractères et afficherait le libellé complet au passage de la souris.
    Mais je n'ai besoin de le faire qu'à partir du niveau de sous-menu donné dans la feuille de style, les précédents ne posant pas de problème.

    Pour le moment, j'en suis à ce code Javascript/JQuery :
    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $(document).ready(function()
    {
     
    	$(".yui3-menu-label").each(function(index)
    	{
    		var label = ""; // Libellé actuel de l'option de menu
    		var short_label = ""; // Libellé raccourci aux 50 premiers caractères
     
    		if($(this).// cascade de style = #custommenu .yui3-menu .yui3-menu-content li li li li a)
    		{
    			label = $(this).text();
    			short_label = label.substring(0, 49) + "...";
     
    			// reste à faire : modification du label de l'option de menu 
    			// + affichage du libellé complet au passage de la souris
    		}		
    	});
    });

    Je ne sais même pas quoi mettre dans la recherche sur le forum ou !
    Pour le moment, je n'ai trouvé que position() ou offset() mais qui ne conviennent pas car ils donnent des coordonnées X et Y.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    regarde du coté de css ellispsis ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Merci pour la piste, j'y suis presque !

    m'a orienté sur un tutoriel d'un autre site et j'ai modifié mon style de cette façon :
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #custommenu .yui3-menu .yui3-menu-content li li li li li a
    {
    	/*white-space: normal;
    	width: auto;*/
    	max-width: 200px;
    	overflow: hidden;
    	-o-text-overflow: ellipsis; /* pour Opera 9 */
    	text-overflow: ellipsis; /* pour le reste du monde */
    }
    J'ai ajouté un "li" car j'ai constaté qu'un libellé court était quand même tronqué mais, malgré le max-width à 200 px, j'ai quand même des libellés qui sont coupés bien avant et je ne comprends pas pourquoi !

    Sur la capture d'écran ci-jointe, on voit que le dernier libellé à droite est coupé alors que sa colonne est plus petite que la précédente, donc qu'elle n'atteint pas les 200px maxi.
    Le libellé complet apparaît car c'est une option finale et non pas un sous-menu. C'est standard dans Moodle. Je vais quand même chercher s'il y a un paramètre qui fait ça aussi automatiquement pour les libellés de sous-menus.



    De plus, ma question reste posée car je dois toujours afficher le libellé complet au passage de la souris, de préférence seulement à partir du 4ème niveau de menu.
    Images attachées Images attachées  
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Si ça ne passe pas en css essaye un plugin ellispsis ...
    http://pvdspek.github.com/jquery.autoellipsis/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Intéressant en effet...

    J'ai essayé en supprimant les parties overflow du CSS, avec ce code Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $(document).ready(function()
    {
    	$("#custommenu .yui3-menu .yui3-menu-content li li li li li a").ellipsis();
    });
    Mais ça ne fonctionne pas. Pas d'ellipsis sur mes libellés de menu !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    tu as linké le plugin ?
    pas d'erreur en console ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. position d'un élément dans une liste
    Par john491 dans le forum Général Python
    Réponses: 8
    Dernier message: 05/05/2006, 13h13
  2. Réponses: 8
    Dernier message: 03/05/2006, 20h10
  3. Réponses: 4
    Dernier message: 01/05/2006, 23h02
  4. Réponses: 1
    Dernier message: 02/08/2005, 16h05
  5. Comment savoir le signe du nombre contenu dans ax ?
    Par falcon007de dans le forum Assembleur
    Réponses: 3
    Dernier message: 26/03/2004, 11h48

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