web-dev-qa-db-fra.com

Comment vérifier l'affichage (aucun / bloc) d'un div en jQuery?

J'utilise cela,

$("#loginanchor1").click(function (e) {
    e.preventDefault();
    $("#signin_menu1").slideDown("slow");
});
$(document).mouseup(function (e) {
    if ($(e.target).parent("a.loginanchor1").length == 0) {
        //$(".signin").removeClass("menu-open");
        $("#signin_menu1").slideUp("slow");
    }
});

Tout fonctionne bien, mais ce qui se passe est quand le signin_menu1 Est affiché bloc et je clique sur mon bouton de la souris à l'intérieur du DIV DIP DIGLESUP ... Je veux que la fonction MouseUp soit empêchée lorsque le signin_menu1 Est affiché. bloquer. Alors j'ai pensé à changer de condition comme,

if(($(e.target).parent("a.loginanchor1").length==0) &&( //check the display of the div)

Maintenant comment vérifier l'affichage?

11
Mubeen

essayer

$(document).mouseup(function (e) {
    var $parent = $(e.target).parent("a.loginanchor1");
    if ($parent.length == 0 && !$("#signin_menu1").is(':visible')) {
        //$(".signin").removeClass("menu-open");
        $("#signin_menu1").slideUp("slow");
    }
});

Je suis confondu avec le problème, mais $("#signin_menu1").is(':visible') Vérifiez si la div est visible (Affichage: Bloc).

Ajout de notes :

vous pouvez essayer de vérifier si la fonction $(e.target) est le signin_menu1 ou le code est à l'intérieur signin_menu1. fais-le comme ça,

$(document).mouseup(function (e) {
    if ($(e.target).is('#signin_menu1') || $(e.target).closest('#signin_menu1').length > 0) { return ; } // do nothing on mouseup
    var $parent = $(e.target).parent("a.loginanchor1");
    if ($parent.length == 0) {
        //$(".signin").removeClass("menu-open");
        $("#signin_menu1").slideUp("slow");
    }
});
16
Reigel

Vous pouvez utiliser JQuery's : visible pour cela.

3
Tim