11

我正在使用这个,

$("#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 幻灯片...我希望在signin_menu1显示块时阻止 mouseup 功能。所以我想改变条件,比如,

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

现在如何检查显示?

4

2 回答 2

16

尝试

$(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 是否可见(显示:块)。

补充说明:

您可以尝试检查$(e.target)is thesignin_menu1或 the is inside 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");
    }
});
于 2010-09-23T07:18:34.463 回答
3

您可以为此使用 jquery 的:visible

于 2010-09-23T07:23:45.373 回答