当用户在另一个div之外单击时,jQuery隐藏div

当用户在另一个div之外单击时,jQuery隐藏div,jquery,Jquery,我知道这个问题被问了很多次,但我的问题有点不同 这是小提琴 对于那些有同样问题的人来说,这里是解决MarcelD问题的方法 因此,如果我在主div外单击,它会隐藏第二个div。但是,如果我在某些元素上单击主div内,它不应该隐藏。与其他子DIV或P一样,它只应在其边框外单击时生效。我该换什么 $document.clickfunction{ 如果e.target.id!=“滑出”{ $'.totals'。隐藏; } }; .1分部{ 位置:固定; 排名:0; 右:0; 宽度:300px; 身高

我知道这个问题被问了很多次,但我的问题有点不同

这是小提琴

对于那些有同样问题的人来说,这里是解决MarcelD问题的方法

因此,如果我在主div外单击,它会隐藏第二个div。但是,如果我在某些元素上单击主div内,它不应该隐藏。与其他子DIV或P一样,它只应在其边框外单击时生效。我该换什么

$document.clickfunction{ 如果e.target.id!=“滑出”{ $'.totals'。隐藏; } }; .1分部{ 位置:固定; 排名:0; 右:0; 宽度:300px; 身高:100%; 背景色:ccc; } .总数{ 边框顶部:1px实心ddd!重要; 位置:固定!重要; 底部:0px!重要; 背景:000!重要; 右:0px!重要; 宽度:300px!重要; 高度:190px!重要; 填充顶部:20px!重要; z索引:999999999999999999999!重要; 显示:; } 萨达 你好,世界!


你必须像@Carsten指出的那样检查父母。。 但他的解决方案只是一个层次

这里更新的fiddle+不管元素有多深->只要它们有父幻灯片,它就不会隐藏你的.totals

$document.clickfunction{ ife.target.id!='slide out'&&$e.target.parents'slide-out'。长度===0{ $'.totals'。隐藏; } }; .1分部{ 位置:固定; 排名:0; 右:0; 宽度:300px; 身高:100%; 背景色:ccc; } .总数{ 边框顶部:1px实心ddd!重要; 位置:固定!重要; 底部:0px!重要; 背景:000!重要; 右:0px!重要; 宽度:300px!重要; 高度:190px!重要; 填充顶部:20px!重要; z索引:999999999999999999999!重要; 显示:; } 萨达 你好,世界!

您可以使用stopPropagation函数停止通过子元素向父元素触发click事件

$document.clickfunction{ 如果e.target.id!=“滑出”{ $'.totals'。隐藏; } }; $'.totals'。单击函数E{ e、 停止传播; } .1分部{ 位置:固定; 排名:0; 右:0; 宽度:300px; 身高:100%; 背景色:ccc; } .总数{ 边框顶部:1px实心ddd!重要; 位置:固定!重要; 底部:0px!重要; 背景:000!重要; 右:0px!重要; 宽度:300px!重要; 高度:190px!重要; 填充顶部:20px!重要; z索引:999999999999999999999!重要; 显示:; } 萨达 你好,世界!


我知道这已经解决了,但最快和最好的解决办法是在下面。我想我们应该使用这个代码。我不想让你接受这个答案,只是想帮助你

$(document).ready(function (e) {
    $('body').not('.totals').click(function(e) {
        $('.totals').hide();
    })
});

您在文档上有一个单击侦听器。。。为什么不将click listener添加到应该可以单击的元素中呢?!这就是你要找的吗?不是真的。它也这样做。如果你点击,让我们向世界问好!它还将隐藏.totals分区,但不应该隐藏。如何避免这种情况?尝试现在不工作alt Allu是否尝试->运行代码段?->它的工作原理和预期的一样->只要你点击里面的东西,就不会发生任何事情。。。所以安德鲁到底需要什么:……如果我在主div中点击一些元素,它不应该隐藏起来……你好,马塞尔,我知道我的英语不好。。。但直到现在你是唯一理解我的人。你做对了,只是你的代码只需要小小的更新。我在末尾添加了e.target.className!=总计…啊,谢谢你的提示@RanaGhosh NOT-如果我的理解是错误的-请简短地解释一下原因。。。你的理解是错误的,对任何人都没有帮助…谢谢$e.target。家长“滑出”。缺少长度===0。你今天是我的英雄!我花了大约3个小时寻找答案…@MarcelD好的,编辑你的答案。我将取消否决票。因为它被锁定了。如果点击空白的灰色部分,它就不起作用了。为什么我看不到你的答案呢@如果你知道阅读代码,你就会知道只有点击黑色部分才能停止翻页。我已经给出了答案。请查收;你的已经是对的。这段时间不起作用,因为我在JSFIDLE中尝试了这一点。请编辑您的答案。我将取消我的否决票。塔克斯。