Bonjour !
J'ai un souci de condition qui me semble bonne mais qui ne fonctionne pourtant pas. Je n'ai hélas pas encore le niveau pour comprendre pourquoi ça ne marche pas.
J'explique le contexte : sur mon site dans une colonne de navigation, il y a des "widgets" identifiés. Tous appartiennent à la classe "widget". Ils sont réorganisables et leur contenu s'affiche en cliquant sur leur titre h3. Jusque là, tout va bien.
Je veux toutefois pouvoir les fermer, et, afin de les réafficher sur demande de l'utilisateur, je pensais faire une liste sous ces widgets contenant un lien cliquable qui réouvre le widget. Je me disais que le plus simple serait de faire en sorte que "si le widget #untel est affiché alors le lien #untel est caché", et vice-versa.
Concrètement, voilà ce que ça donne :
- pour l'organisation de la page côté html :
Et côté jQuery, ça donne ceci :
La classe css hidden ne contient qu'un "display:none".
La condition que j'envisageais et qui ne fonctionne pas est :
L'étape suivante aurait été de faire en sorte qu'en cliquant sur le #raccourci_connexion, le #widget_connexion perde sa classe "hidden".
Quelqu'un aurait-il l'amabilité de m'indiquer mon erreur ou une autre méthode permettant d'obtenir un résultat équivalent ?
Merci pour votre aide.
J'ai un souci de condition qui me semble bonne mais qui ne fonctionne pourtant pas. Je n'ai hélas pas encore le niveau pour comprendre pourquoi ça ne marche pas.
J'explique le contexte : sur mon site dans une colonne de navigation, il y a des "widgets" identifiés. Tous appartiennent à la classe "widget". Ils sont réorganisables et leur contenu s'affiche en cliquant sur leur titre h3. Jusque là, tout va bien.
Je veux toutefois pouvoir les fermer, et, afin de les réafficher sur demande de l'utilisateur, je pensais faire une liste sous ces widgets contenant un lien cliquable qui réouvre le widget. Je me disais que le plus simple serait de faire en sorte que "si le widget #untel est affiché alors le lien #untel est caché", et vice-versa.
Concrètement, voilà ce que ça donne :
- pour l'organisation de la page côté html :
<div class="colonne">
<div class="widget" id="widget_connexion">
<h3>Connexion // Inscription</h3><span class="fermeture"><a href="#" >Fermeture</a></span>
<div class="widget_contenu">
<!--contenu du widget ici.-->
</div>
</div>
<div class="widget_ajout">
<p>Liste des widgets :</p>
<ul>
<li id="raccourci_connexion" class="hidden">Connexion // Inscription</li>
</ul>
</div>
</div>
Et côté jQuery, ça donne ceci :
$(".widget")
.each(function(){
$(this).hover(function(){
$(this).find(".fermeture").css("visibility","visible");
}, function(){
$(this).find(".fermeture").css("visibility","hidden");
})
$(".fermeture").click(function(){
$(this).parents(".widget").addClass("hidden");
})
.end()
.find(".fermeture").css("visibility","hidden");
});
La classe css hidden ne contient qu'un "display:none".
La condition que j'envisageais et qui ne fonctionne pas est :
if ($("#widget_connexion").hasClass("hidden")) $("#raccourci_connexion").removeClass("hidden");
L'étape suivante aurait été de faire en sorte qu'en cliquant sur le #raccourci_connexion, le #widget_connexion perde sa classe "hidden".
Quelqu'un aurait-il l'amabilité de m'indiquer mon erreur ou une autre méthode permettant d'obtenir un résultat équivalent ?
Merci pour votre aide.