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 :

visibilité de div


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut visibilité de div
    Bonjour à tous,

    je suis en train de batir un petit site vitrine qui sera basé sur une page avec 4 onglets.
    Chaque onglet est en fait une div activée en fonction du clic sur un item de menu.
    l'item de menu a toujours pour id quelque chose du genre "xx-button".
    chaque div correspondant à un onglet à pour id quelque chose du genre "xx".
    Ce qui me permet, en fonction du bouton cliqué, de savoir quelle div afficher.

    Ci-dessous, le code avec lequel je gère l'affichage de mes div :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $("#content .button").click(function(){
     
    	$clicked = $(this);
     
    	var idToLoad = $clicked.attr("id").split('-');
     
    	$("#panels").find("div:visible").fadeOut("fast", function(){
    		$(this).parent().find("#"+idToLoad[0]).fadeIn();
    	})
     
    });
    Ce code fonctionne à un "détail" prés : les div contenues dans la div affichée (via "$(this).parent().find("#"+idToLoad[0]).fadeIn();") restent invisibles.

    Comment puis-je modifier mon script de sorte que l'affichage de la div sélectionnée affiche également ses contrôles enfants.

    D'avance merci pour votre aide

  2. #2
    Membre éprouvé Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Par défaut
    Les div enfant sont initialisées en display:none dans le css ? Si oui, pourquoi ne pas les laisser visibles et juste initialiser la div parente en display:none ? Le résultat serait le même.

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    vrd-74, merci pour ta réponse.
    Non, les div enfants ne sont pas initialisées avec display:none;

    C'est le fadeOut que s'en charge.

  4. #4
    Membre éprouvé Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Par défaut
    Il faudrait alors que le fadeOut ne s'appliquent qu'aux div principales, celles associées au bouton. Une classe sur celles-ci avec un fadeOut appliqué dessus ne passera que les div principales en display none, et laissera les div enfants en visible.

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    C'est ce que je me suis dit. Du coup, j'ai modifié mes div (correspondant à mes onglets) en leur joutant une class "onglet".
    Par contre, j'ai beau essayer, j'ai du mal à trouver le moyen de "filtrer" les div à masquer dans le fadeOut.

    Aurais-tu une piste pour m'aiguiller ?

    Edit : Sinon, comment procéder pour faire un truc dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#panels").find("div:visible").not("#"+idToLoad).fadeOut("fast")

  6. #6
    Membre éprouvé Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Par défaut
    Personnellement j'aurai fait ça, sachant que tu peux très bien cacher toutes les div puisque le fadeIn ne se fait qu'après (à moins que tu veux faire un fondu enchainé, mais ça me paraitrait bizarre avec des onglets) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('#panels .onglet').fadeOut('slow', function() {
    	$('#'+idToLoad).fadeIn();
    });

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

Discussions similaires

  1. Visibilité d'un div
    Par Moony Light dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/02/2008, 16h09
  2. Visibilité d'un DIV
    Par Kimado dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 03/11/2007, 11h31
  3. visibilite et <div>
    Par tiboux dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/01/2007, 14h39
  4. Visibilité d'une </div> ...
    Par highman dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/03/2006, 18h51

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