J'essaye d'écrire une fonction de jQuery pour cacher/montrer un div sur un clic. J'ai un tag <a>
avec la classe my-button
. Un div avec la classe my-div
est initialement masqué avec display: none
lorsque la page se charge. Quand un utilisateur clique sur my-button
et my-div
est caché, je veux montrer my-div
. Lorsque my-div
est visible, je veux être en mesure de le cacher lorsqu'un utilisateur clique n'importe où sur la page autre que sur my-div
. Cela inclut également un clic sur my-button
.L'utilisation de .toggle() pour afficher et masquer une div sur le clic ne fonctionne pas
<a class="my-button">Click me!</a>
<div class="my-div">Show Me or Hide Me!</div>
J'ai essayé d'utiliser la fonction .toggle()
sans succès; my-div
ne s'affichera pas après un clic sur my-button
. Si je remplace .toggle()
par .show()
, my-div
montrera et cachera si je clique n'importe où sur la page mais pas si je clique encore sur my-button
.
$(document).mouseup(function(e) {
var $container = $(".my-div");
$(".my-button").click(function(){
$container.toggle();
});
if (!$container.is(e.target) && $container.has(e.target).length === 0) {
$container.hide();
}
});
Quelle serait la meilleure façon de réaliser ce que je veux.