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 :

Etat par défaut avec un Effect.toggle [script.aculo.us]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Par défaut Etat par défaut avec un Effect.toggle
    Bonjour à tous !

    J'utilise script.a.culous pour "toogler" un effet blind sur un élément ul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <li class="categorie" onclick="Effect.toggle('cat10', 'blind', { duration: 0.3 })">azerty
    	<ul id="cat10" title="Projects" class="souscategorie">
    		<li class="">
    			<a href="index.php?page_name=8">uiop</a>
    		</li>		
    	</ul>
    </li>
    Ça marche, c'est génial ! Mais, j'aimerais que mon élément soir caché par défaut. J'ai essayé de faire ça en CSS avec "display: none", avec "height: 0"... mais l'effet bugge. J'ai aussi tenté de mettre d'utiliser onload pour toggler une première fois mais c'est interdit dans une autre balise que body (et au moment où body se charge je ne "connais" pas encore les id des listes à cacher.

    Si quelqu'un a une idée je suis preneur

    Merci !

  2. #2
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Citation Envoyé par robmayol Voir le message
    J'ai aussi tenté de mettre d'utiliser onload pour toggler une première fois mais c'est interdit dans une autre balise que body
    Qu'est-ce qui est interdit ?
    Tu peux mettre ton script à la fin du body :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type="text/javascript">
    $("cat10").hide();
    // ou mieux tous les sous éléments d'un coup :
    $$(".categorie ul").invoke("hide");
    </script>
    </body>
    Ou encore mieux dans un js externe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Event.observe(window, load, initMenu);
    function initMenu() {
    $$(".categorie").each(function(li){
      li.observe("click", Effect.toogle.bindAsEventListener(li.down("ul"), 'blind', { duration: 0.3 }));
    $$(".categorie ul").invoke("hide");
    });
    }
    EDIT : Dans mon code du fichier externe, il n'y a plus de onclick à mettre dans ton code html, c'est l'initialisation qui s'en occupe

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Par défaut
    Citation Envoyé par gwyohm Voir le message
    Qu'est-ce qui est interdit ?
    Il me semblait que le W3C interdisait d'utiliser onload dans une autre balise que body. En fait, après vérification c'est onLoad avec une majuscule qui est interdit...

    Je lutte pas mal avec JavaScript et DOM, j'ai acheté un bouquin "JavaScript pour le Web2.0" mais certains paragraphes sont encore un peu high-level pour quelqu'un qui n'est pas initié à la POO et à la vraie programmation en général. Je connais PHP sur le bout des doigts mais JS c'est une autre paire de manches (les standards, les différences entre navigateurs ).

    En tout cas merci beaucoup pour cette réponse rapide et efficace !

    Une petite question quand même, j'ai cru comprendre que le "$" servait à appeler une classe de bibliothèque mais pourquoi certaines de tes lignes utilisent deux "$$" ? C'est peut être une notion très anecdotique que j'apprendrais en évoluant en JS mais je suis curieux

  4. #4
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Citation Envoyé par robmayol Voir le message
    Une petite question quand même, j'ai cru comprendre que le "$" servait à appeler une classe de bibliothèque mais pourquoi certaines de tes lignes utilisent deux "$$" ? C'est peut être une notion très anecdotique que j'apprendrais en évoluant en JS mais je suis curieux
    Alors la fonction $ qui est propre à prototype te permet d'obtenir un "élément étendu prototype" par son ID. La fonction $$ te renvoie elle un tableau d'éléments étendus prototype" par un sélecteur css. Je met étendu prototype entre guillemets car c'est un peu plus compliqué que ça. Pour bien comprendre, la doc !

    Du coup tu peux écrire des instructions telles que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $("jambon"); // renvoie l'élément d'id jambon
    $$("#jambon")[0]; // idem avec la fonction $$ simplement en sélecteur css, il faut passer le #
    Mais pour plus d'infos :
    $ $$

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Par défaut
    C'est excellent ça, j'ai l'impression que ça va me simplifier grandement la vie ! Adieu getElementById(), bonjour les dollars...

    Merci encore pour ces précision !

    P.S. C'est marrant, "jambon" c'est aussi un de mes mots joker favoris quand je code =)

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

Discussions similaires

  1. Modification passerelle par défaut avec netsh
    Par neblevrai dans le forum Windows 2000/Me/98/95
    Réponses: 2
    Dernier message: 09/07/2008, 13h11
  2. Réponses: 9
    Dernier message: 06/03/2008, 08h58
  3. [html:select] valeur par défaut avec liste dynamique
    Par CPI_en_mousse dans le forum Struts 1
    Réponses: 3
    Dernier message: 02/07/2007, 14h29
  4. charger une date par défaut avec sql Loader
    Par top-dogg dans le forum SQL*Loader
    Réponses: 15
    Dernier message: 18/12/2006, 10h59
  5. Bouton par défaut avec MessageDlg ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/04/2005, 19h28

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