javascript - 除了打开的元素外,在任何地方都进行点击时如何关闭元素?

标签 javascript jquery jquery-events globalevent

我正在尝试制作在单击按钮时打开的面板。我有按钮,我有面板。使用 click() 事件它会打开。再次按下该按钮时,它会关闭。

$('#button').click(function() {

    $('#panel').toggle();
});

我想实现的是,如果用户点击除 #button#panel 之外的任何地方,它也会关闭。

附言我试过这样的事情,但这不是想要的行为。

$('#button').mouseenter(function() {

    $('#panel').show();

}).mouseleave(function() {

    setTimeout(function() {
        $('#panel').hide();
    }, 2000);
});

最佳答案

$(
    function(){
        $("#button").click( function(){ $("#panel").toggle(); } );
        $(document).click( function(e){
            var elm = jQuery(e.target);
            if(elm.is("#button") || elm.is("#panel") || elm.parents("#panel").length>0)return;
            $("#panel").hide();
        });
    }
);

Example

检查以确保点击的元素 [e.target] 不是

  1. 按钮 elm.is("#button")
  2. 面板 elm.is("#panel")
  3. 面板中的任何元素 elm.parents("#panel").length>0

关于javascript - 除了打开的元素外,在任何地方都进行点击时如何关闭元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749757/

相关文章:

javascript - requirejs 意外行为

jquery - 构建 jquery 插件的最佳语法是什么?

Javascript事件和递归问题

javascript - 为什么 Firefox 中无法触发在线和离线事件?

javascript - 如何仅使用 javascript 加粗搜索内容?

javascript - ReactJs: map 函数中的 Prop 类型无效。类型 `children` 的无效 prop `array`

javascript - 无法从 Javascript 访问隐藏的 HTML 元素

javascript - asp.net 服务器端禁用客户端启用的单选按钮

javascript - 可以在sessionStorage中使用jquery吗?

javascript - 当用户允许或拒绝访问 "Physical Location"时如何调用函数?