Как проверить отображение (нет / блок) div в JQuery? - PullRequest
11 голосов
/ 23 сентября 2010

Я использую это,

$("#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");
    }
});

Все работает нормально, но происходит, когда отображается блок signin_menu1, и я нажимаю кнопку мыши внутри div, слайды div ... Я хочу mouseupФункция должна быть заблокирована, когда отображается блок signin_menu1.Итак, я подумал об изменении условия, например,

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

Теперь, как проверить дисплей?

Ответы [ 2 ]

16 голосов
/ 23 сентября 2010

try

$(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");
    }
});

Я запутался в проблеме, но $("#signin_menu1").is(':visible') проверит, виден ли div (display: block).

добавлены примечания:

Вы можете попробовать проверить, является ли $(e.target) signin_menu1 или находится внутри signin_menu1.сделай так,

$(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");
    }
});
3 голосов
/ 23 сентября 2010

Вы можете использовать jquery : видимый для этого.

...