Faire des DIV visible sur LI cliquez sur
J'ai un div
id "superposition" que je veux rendre visible lorsque l'utilisateur clique sur le li
qui l'enferme.
Le code HTML:
<ul>
<li class="album" id="nirvana-nevermind">
<div id="overlay">
<a href="http://www.nirvana.com">Nirvana</a> Nevermind
</div>
</li>
</ul>
Le CSS:
#overlay { visibility: hidden; }
Le javascript:
$(document).ready(function(){
$(".album").click(function() {
//need the following to toggle
$("#overlay").css("visibility", "visible");
});
$("#overlay").click(function() {
window.location=$(this).find("a").attr("href");
return false;
});
});
Mise à jour: Le code fonctionne maintenant. J'ai modifié le code pour ce que je suis en utilisant. La DIV#incrustation s'affiche lorsque la LI.l'album est cliqué, cependant, j'ai plus d'une de ces LI.les albums les uns à côté des autres et de n'importe qui LI est cliqué, la #superposition montre seulement sur la première LI. Une idée de comment résoudre ce problème?
- Veuillez inclure exemple HTML, plutôt que d'essayer de le décrire... vous risquez de manquer un détail essentiel. Vous suggérons de mettre le code de démonstration sur jsfiddle.net
Vous devez vous connecter pour publier un commentaire.
Le problème est dans la façon dont vous avez utilisé le
css()
méthode jQuery. Vous devez utiliser un,
pour séparer la propriété et de la valeur plutôt qu'une:
.Comme suit:
Voir ici pour un exemple de travail sur jFiddle.
(À noter que l'OP a changé la façon dont ils avaient écrit à la propriété dans la question depuis la rédaction de ce.)
Mise à JOUR
J'ai mis à jour le code sur JSFilddle pour montrer comment vous pouvez faire cela avec plusieurs
li
's.Voir ici pour le JSFiddle exemple
Firsly j'ai changé d'id de superposition d'être une classe à la place. C'est parce qu'un ID ne peut exister qu'une fois dans tout document HTML. C'est un identifiant unique et non un conteneur.
Thr Code JS est simplement en regardant l'objet courant (celui juste a cliqué) et la recherche de tous les enfants avec un nom de classe de "superposition". C'est alors la définition de la visibilité visible pour ces articles.
Au lieu de
utilisation
ou
Pour le faire disparaître après une certaine période de temps, jetez un oeil à la
setTimeout
méthode et l'utilisation.show()
n'est pas équivalent à.css("visibility","visible");
. Il est équivalent à.css('display', 'block')
..hide()
, ils vont être allé et il n'y aura rien à cliquer.LI
s, pas laDIV
s. C'est leDIV
s qui vont être cachés.Changement
à
.show()
et.hide()
.Changement
$("#overlay").css("visibility":"visible");
à:Voir violon pour un exemple vivant.
Remarque: Vous devez modifier
overlay
à un attribut de classe.li
question. J'ai ajouté un exemple vivant.Que voulez-vous dire? Voulez-vous trop de la masquer automatiquement #superposition? "Comment puis-je changer mon code de sorte qu'il apparaît ou disparaît après un certain temps?". Si vous voulez automatiquement, faites ceci:
Et de garder à l'esprit que la définition de la visibilité à caché ne cache mais toujours en prenant de l'espace. Réglage display: none (hide()) cache complètement.
Une autre chose est que vous ne devriez pas utiliser un identifiant div. Comme vous le savez probablement, un ID ne peut être utilisée qu'une fois, qui dit que vous ne pouvez jamais utiliser votre fonction sur plusieurs li avec les mêmes fonctionnalités. Je voudrais faire une classe et puis:
Cette façon de travailler sur tous les li qui a une superposition div.