javascript - 点击外部时如何关闭侧边栏?

标签 javascript jquery

调用此函数时,会出现一个右侧边栏

var toggleSidebar = function() {
    $('#sidebar .arrow-box').click(function() {
        if (s === 0) {
            s = 1;
            $('#sidebar').css('left', '0');
            $('#sidebar .arrow').removeClass('dir-two');
            $('#sidebar .arrow').addClass('dir-one');
            $('#content').css('padding-left', '0');
        } else {
            s = 0;
            $('#sidebar').css('left', '-300px');
            $('#sidebar .arrow').addClass('dir-two');
            $('#sidebar .arrow').removeClass('dir-one');
            $('#content').css('padding-left', '300px');
        }
    });
};

但是正如您所看到的,只有在单击该特定元素时我才能打开和关闭该侧边栏,当我单击外部时我应该做什么才能关闭它?

以防万一:根据用户体验,当侧边栏出现时,我无法在整个 View 中使用深色背景。

最佳答案

测试点击的目标。如果它与您要关闭的目标不匹配,则将其关闭。所有其他元素都是正文的子元素 - 因此单击面板之外的任何位置都将检索单击目标。

$sidebar = $('#sidebar');
$( "body" ).click(function( event ) {
  var a  = event.target;
  if(a === $sidebar){
//close the sidebar
//you may also want to test if it is actually open before calling the close function.
}
});

关于javascript - 点击外部时如何关闭侧边栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852911/

相关文章:

javascript - 完成后在数组开头添加项目

javascript - 在 WebSocket 上发送填充数据

jquery - Bootstrap 工具提示中的图像

javascript - 动态添加的表单字段不会发布到服务器

javascript - Material UI GridTile 高度

javascript - 为什么我的 Jquery 事件不会在 focusout() 上触发?

javascript - Sharepoint 2013 添加查找值到另一个列表 Javascript 列表

html - 悬停不适用于 AJAX

jquery - 在遵循 Heroku 关于如何直接上传到 aws s3 的教程之后,无法将 ActionDispatch::Http::UploadedFile 转换为字符串

jquery - 创建 Hover Mega 菜单 - 单击其他位置