javascript - jquery div 显示和隐藏问题

标签 javascript jquery html css

我有一个问题。当我第一次按下链接 div 显示时,当我按下文档时它消失了。当我第二次按下链接时,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();
            }
        });
    });
});

});

最佳答案

您已经嵌套了您的回调 - 所以您只是在其他回调中设置您的事件回调。我想这就是导致您出现问题的原因。

在您的触发事件处理程序中,如果您使用 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);
    }
});

关于javascript - jquery div 显示和隐藏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226893/

相关文章:

javascript - 每次提交表单时ajax调用次数都会增加

javascript - 查找文本并使用 javascript 滚动到其中

javascript - 如何从 jQuery 中的同级 div 元素检索一些文本

javascript - Daterangepicker 无法在网页 ASP.NET MVC 中工作

html - 如何将html表单数据发送到nodejs

javascript - JS - 12 小时时间匹配的正则表达式

javascript - ajax 调用不更新 Rails 上的内容

android - 如何根据android webview中的html输入类型以编程方式打开Android软键盘

javascript - 密码确认不允许 3 位密码

javascript html5元素删除