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

Bibliothèques & Frameworks Discussion :

Est-il possible de changer l'id d'un div ?


Sujet :

Bibliothèques & Frameworks

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut Est-il possible de changer l'id d'un div ?
    Hello !

    J'aimerais faire ceci :

    - un div "menu" qui s'affiche d'abord en minimisé en haut à gauche de ma web app.
    - puis quand je clique sur une icône "triangle bas", le menu se déroule tout en restant au dessus des éléments de la page situés dessous
    - et si je clique sur une icône "pin", le menu vient s'accrocher sur la page et pousse les éléments dessous lui pour qu'ils s'ajustent à sa droite

    Je conçois très bien comment faire le tout avec 3 div d'id différentes et des règles css (z-indes et display notamment) pour gérer le tout avec rechargement de ma page pour afficher le bon div.

    Cependant, je souhaiterais savoir si on peut directement changer l'id d'un div donné avec AJAX et ne réafficher que ce div. En effet, ma page contient de nombreuses données tirées d'une base de données distante sous-jacente et le rechargement à chaud d'une seule portion de la page (non liée à la partie base de données qui plus est) m'apparaît beaucoup plus efficace.

    Merci pour vos conseils,

    Arnaud

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Pas compris
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Résolu (désolé pour l'entête [AJAX], ça avait en fait bien peu de rapport avec AJAX, mais comme je travaille sur ça en ce moment, je me suis un peu mélangé les pinceaux !).

    En fait, ce que je voulais faire, c'est éviter d'écrire 3 fois le div "menu" en HTML dans ma page sous 3 id différents (chaque id ayant ses règles css pour avoir l'affichage voulu) et d'afficher ensuite le bon avec des effets type Effect.Appear("le bon div") de la bibliothèque script.aculo.us.

    En faisant un lien :
    <a href="#" onClick="this.parentNode.id='nouvel_id'; return false;" >pin</a>
    par exemple, ça marche très bien et je n'ai besoin que d'écrire une seule fois le html du menu car je ne change que l'id du div qui prend alors les règles css définies pour cet id.

    Désolé pour ce message pas très clair !

    --
    Arnaud

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut juste une précision
    Juste une précision que j'aimerais savoir :

    si je fais ce que j'ai dit (à savoir onClick="..."), est-ce TOUTE la page qui est rechargée ou simplement le div concerné par le javascript ?

    --
    Arnaud

  5. #5
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Le div n'est pas rechagé, tu change juste son ID... je pige pas trop
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Je rappelle le but de la manoeuvre :
    - un div "menu" qui s'affiche d'abord en minimisé en haut à gauche de ma web app.
    - puis quand je clique sur une icône "triangle bas", le menu se déroule tout en restant au dessus des éléments de la page situés dessous
    - et si je clique sur une icône "pin", le menu vient s'accrocher sur la page et pousse les éléments dessous lui pour qu'ils s'ajustent à sa droite
    Donc j'écris mon menu en html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div id="menu_minimized">
    ...
    </div>

    Puis je définis trois règles css adéquates sous les 3 id suivantes :
    #menu_minimized { ... } : ne montre qu'une barre d'icônes, chaque icône étant un item du menu
    #menu_maximized { ... } : montre le menu complet en "survol" au dessus de la page
    #menu_pinned { ... } : "fixe" le menu dans la page

    Enfin, j'ai 3 liens en tête de mon menu pour passer d'un état à un autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <a href="#" onClick="this.parentNode.id='menu_minimized';return false;">Minimiser</a>
    <a href="#" onClick="this.parentNode.id='menu_maximized';return false;">Maximiser</a>
    <a href="#" onClick="this.parentNode.id='menu_pinned';return false;">Fixer</a>
    En test simpliste, ça marche bien, mais avant de le passer en production dans ma web app, je me demandais si toute la page était rechargée quand on passe d'un état à l'autre ou seulement le div menu.

    En effet, la page affichée est bourrée de contenu issu d'une base de données distantes et avec un petit nombre d'utilisateurs traffiquant en même temps le menu, je risque de surcharger un peu le serveur et le réseau à recharger à chaque fois toute la page (appel à la couche [service] et retour de toutes les données jusqu'au client).

    --
    Arnaud

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Effectivement comme l'a dit FremyCompany ce n'est pas parce que tu changes l'id d'un div que le navigateur va recharger des choses sur la page.
    Tant que le navigateur n'a pas besoin d'informations supplémentaires, il n'a aucune raison de refaire une requete.

    Là où éventuellement tu pourrais avoir des aller-retours, ça serait par exemple si tu changeais le src d'une img, dans quel cas le navigateur serait obligé de demander l'image au serveur pour pouvoir l'afficher (idem avec des images de fond en CSS par exemple).

    Pour t'en convaincre tu peux regarder les access_log de ton serveur
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Effectivement comme l'a dit FremyCompany ce n'est pas parce que tu changes l'id d'un div que le navigateur va recharger des choses sur la page.
    Donc, la page est réaffichée avec les nouvelle règles css pour le div, mais le reste de la page n'est pas changé lui, OK.

    Là où éventuellement tu pourrais avoir des aller-retours, ça serait par exemple si tu changeais le src d'une img, dans quel cas le navigateur serait obligé de demander l'image au serveur pour pouvoir l'afficher (idem avec des images de fond en CSS par exemple).
    D'où peut-être un problème dans mon cas, car le div "menu_minimized" utilisera des images pour représenter chaque item du menu. Je vais tester ça ...

    Merci pour vos réponses,

    --
    Arnaud

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/08/2010, 23h31
  2. i18n - est il possible de changer de langue sans le voir dans l'url ?
    Par Chico el guacamole dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 07/06/2010, 11h46
  3. Réponses: 0
    Dernier message: 24/07/2009, 10h48
  4. [Turbo Pascal] Est-il possible de changer l'icone de l'exe ?
    Par Invité dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 08/05/2009, 09h23
  5. Réponses: 2
    Dernier message: 07/09/2007, 16h39

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