Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何简单地实现谷歌的注销之类的;单击任意位置以关闭";什么样的功能?_Javascript_Jquery_Html_User Interface - Fatal编程技术网

Javascript 如何简单地实现谷歌的注销之类的;单击任意位置以关闭";什么样的功能?

Javascript 如何简单地实现谷歌的注销之类的;单击任意位置以关闭";什么样的功能?,javascript,jquery,html,user-interface,Javascript,Jquery,Html,User Interface,以下是我的团队成员想要了解的:如何提供GMail这样的功能,您点击电子邮件,它会打开带有一些附加用户信息的注销div,当您点击文档之外的任何位置时,它会关闭该框(隐藏div)?可以使用以下代码实现: HTML: CSS: JSFiddle可以在上看到,实现这一点的最简单方法是为整个文档绑定一个点击处理程序,该处理程序关闭框,也为框绑定一个。在框的事件中,停止单击事件的传播,以便: $(document).on('click', function() { $('#box').hide();

以下是我的团队成员想要了解的:如何提供GMail这样的功能,您点击电子邮件,它会打开带有一些附加用户信息的注销div,当您点击文档之外的任何位置时,它会关闭该框(隐藏div)?

可以使用以下代码实现:

HTML:

CSS:


JSFiddle可以在

上看到,实现这一点的最简单方法是为整个
文档
绑定一个
点击处理程序,该处理程序关闭框,也为框绑定一个。在框的事件中,停止单击事件的传播,以便:

$(document).on('click', function() {
    $('#box').hide();
});

$('#box').on('click', function(e) {
    e.stopPropagation();
});
演示:

请注意,您还需要停止传播打开该框的任何单击事件,否则它将立即关闭。

将事件绑定到事件处理程序中通常是一个非常糟糕的主意。@ThiefMaster感谢您提醒我这一点,我真的错过了这一点,因为我匆忙丢失了之前的小提琴。我已经更正了这里的代码以及小提琴上的代码。你可以检查一下。我不想把一件事和另一件事绑在一起。他们只是肩并肩,但在工作时却没有被注意到。再次感谢。我理解这一点,这就是为什么我使用MouseUp和MouseDown事件,所以我不需要使用停止传播。上述方法的另一个问题是$('#box').hide();将在每次单击文档中的任何位置时调用。所以如果你想阻止它,你必须解开它。我已经更新了你们的小提琴,以显示我想告诉你们的:用我创造的小提琴,你们不会发现那个问题。让我知道我们是否能想出比目前为止我们两人都更好的方法。无需解开它-如果框不可见,它不会做任何事情。我知道它不会做任何事情,除了为什么在每次单击文档时都要执行该行?这是一个问题吗,您单击的唯一时间是在离开页面或使用表单时。
$(document).ready(function(){
    // To show user-box
    $("#show-card").mouseup(function(){
        $("#user-card").show();

        // To hide user-box
        $(document).mousedown(function(){
            $("#user-card").hide();
            $(this).unbind("mousedown");
        })
    });
});
#user-card {
    height:75px;
    width:200px;
    border:solid 1px #ccc;
}
$(document).on('click', function() {
    $('#box').hide();
});

$('#box').on('click', function(e) {
    e.stopPropagation();
});