jquery div显示和隐藏问题

时间:2015-07-05 03:28:27

标签: javascript jquery html css

我有问题。当我第一次按下链接div show时,然后当我按下文档时它会消失。当我第二次按下链接时div出现并突然消失。怎么了?

$(function() {
$("#trigger").click(function() {
    $('#toolWrapper').toggle(function() {
        $(document).click(function(event) {
            if (!($(event.target).is('#toolWrapper') || $(event.target).parents('#toolWrapper').length || $(event.target).is('#trigger'))) {
                $('#toolWrapper').hide(500);
                event.preventDefault();
            }
        });
    });
});

});

1 个答案:

答案 0 :(得分:0)

您已嵌套回调 - 因此您只在其他回调中设置事件回调。我想这就是造成你问题的原因。

在触发器事件处理程序中,如果使用event.stopPropagation();,则可以停止调用文档事件处理程序,因此您不必检查它是否是事件目标。

这是你想要做的吗? jsfiddle

[编辑]:添加了回答代码:

$(document).ready(function() {
    $('#toolWrapper').hide();
});

$("#trigger").click(function(event) {
    $('#toolWrapper').show();
    event.stopPropagation();
});

$(document).click(function() {
    if (!$(event.target).is('#toolWrapper') || $(event.target).parents('#toolWrapper').length) {
        $("#toolWrapper").hide(500);
    }
});