javascript - 单击任意位置即可关闭菜单

标签 javascript search server load gzip

我正在开发一个网站,这里是链接文件:///D:/fahim/HTML/menu/index.html。如果您单击菜单,它会在其自己的“X”按钮上关闭,但我希望通过单击菜单外部来关闭它。这是主页上使用的 javascript。

<script>
var popupView = new popup();

document.querySelector('#btn_1').addEventListener('click', function () {
popupView.show(document.querySelector('#popup_1'));
});

document.querySelector('#btn_2').addEventListener('click', function () {
popupView.show(document.querySelector('#popup_2'), function () {
	console.log('show do something');
});
});

document.querySelector('#btn_3').addEventListener('click', function () {
popupView.show(document.querySelector('#popup_3'), '', function () {
	console.log('CLOSE');
});
});

</script>

这是作为 popup_view.js 文件附加在服务器上的代码

(function () {
    var popup = function() {
        function hide(dom, dosomething) {
            if (!dom) {
                console.error('hide function not set dom object');
                return;
            }
            if (dosomething) {
                dosomething();
            }
            dom.className += ' ' + 'popup_hide';
        }
        function show(dom, dosomethingShow, dosomethingClose) {
            if (!dom) {
                console.error('show function not set dom object');
                return;
            }
            if (dosomethingShow) {
                dosomethingShow();
            }
            var className = 'popup_hide',
                reg = new RegExp('(^|\\b)' +
                    className.split(' ').join('|') +
                    '(\\b|$)', 'gi');
            dom.className = dom.className.replace(reg, '').trim();
            var nodes = dom.childNodes;
            for (var i = nodes.length - 1; i >= 0; i--) {
                if (nodes[i].className === 'pop_up_close') {
                    var close = function (e) {
                        if (dosomethingClose) {
                            dosomethingClose();
                        }
                        dom.className += ' ' + 'popup_hide';
                        nodes[i].removeEventListener('click', close);
                    };
                    nodes[i].addEventListener('click', close);
                    break;
                }
            }
        }
        this.show = show;
        this.hide = hide;
    };
    window.popup = popup;
})();

请帮忙,因为我已经尝试了很多代码,除了这些,但没有一个有效

最佳答案

$(document).on('click', function(e){
  //your close function
  e.stopPropagation();
}

将该代码放在 $(document).ready(... block 中的任意位置

关于javascript - 单击任意位置即可关闭菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36469832/

相关文章:

javascript - google+ api 人的 friend

url - 用于说出结果的 Google 搜索参数 (tts)

c - 使用消息队列的 C 语言服务器和客户端(无套接字代码)

json - 使用 gin gonic 返回文字 JSON 的最简单方法

javascript - 使用 JavaScript 增加分数

javascript - 从外部指令访问表单验证

javascript - 使用自定义容器宽度滚动后动画崩溃

mysql sphinx 生成唯一id

search - YouTube API v3异常行为-搜索期间的视频数量很少

java - 服务器未收到客户端的请求