javascript - 单击页面上的任意位置时关闭元素

标签 javascript jquery toggle

我的页面上有一个元素,可以通过单击文本链接来打开和关闭。当用户单击元素本身之外的页面上的任何位置时,我还需要隐藏该元素 - 这是我的 jQuery 代码 - 有人可以告诉我要进行哪些修改以执行我需要的操作吗?

$(function() {
$("#header-translate ul li").click(function() {
    $("#header-translate li ul").toggle("slide", { direction: "up" }, 500); 
});
});

最佳答案

使用 jQuery's one function非常适合这个。

$(function() {
    $("#header-translate ul li").click(function(e) {
        e.preventDefault();
        var $toClose = $("#header-translate li ul")
        $toClose.slideToggle(500, function() {
            if($toClose.is(':visible')) {
                $('body').one('click', function(e) {
                    e.preventDefault();
                    $toClose.slideUp(500);
                });
            }
            else {
                $('body').unbind('click');
            }
        });
    });
});

这将确保此点击处理程序只执行一次,并且仅在元素显示时执行。

关于javascript - 单击页面上的任意位置时关闭元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7284402/

相关文章:

jQuery 和 CSS - 按高度剪切文本,不截断

javascript - 我想在使用alertify单击 "ok"后重新加载index.html页面

javascript - jQuery:如果子项包含文本编号范围,则隐藏父项?

javascript - 使用 jQuery 单击链接

javascript 切换和 anchor

javascript - JQuery 切换问题,需要点击两次

javascript - 尝试在新选项卡加载时滚动到目标 ID

javascript - 将数组与 javascript 调用一起发送到 java -rest 中的 Driver 类

javascript - 如何在div中调整上传图片的预览?

javascript - 在新插入的 Ajax 内容加载完成后,是否有类似于 `$(window).load();` 的功能用于执行功能?