44 votes

événement jQuery click off

J'ai un div flottant qui s'affiche, et je veux qu'il soit masqué lorsque l'utilisateur clique dessus. Cela serait similaire au rappel de fonction .hover () lors du survol d'un élément. Seulement je veux faire cela pour le clic.

J'ai juste essayé de définir un événement de clic pour le corps, ce qui masquerait la div, mais cela a donné des résultats inattendus.

Quelqu'un a une idée sur la façon dont je pourrais facilement le faire?

86voto

David Bennett Points 1436

Si vous souhaitez effacer la div lorsque vous cliquez ailleurs dans la page, vous pouvez faire quelque chose comme:

 $('body').click(function(event) {
    if (!$(event.target).closest('#myDiv').length) {
        $('#myDiv').hide();
    };
});
 

19voto

PhillFox Points 798

Une autre option, peut-être plus simple, consisterait à ajouter un div transparent entre le DIV flottant et le reste de la page.

Un simple événement de clic sur la DIV transparente pourrait gérer le masquage et éviterait les problèmes que vous rencontrez avec l'événement de clic.

11voto

Kelly Points 121

Si vous utilisez Jquery, vous pouvez utiliser un sélecteur tel que:

 $("*:not(#myDiv)").live("click", function(){
    $("#myDiv").hide();
});
 

10voto

annakata Points 42676

Vous êtes sûrement à la recherche de l'événement de flou ?

9voto

SalmanPK Points 6649

La meilleure façon de faire est: -

    
$ (document) .bind ('click', fonction (e) {  

 var $ clicked = $ (e.target);

    if (! $ clicked.parents (). hasClass ("divtohide")) {
        $ (". divtohide"). hide ();
    }

});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X