我的DIV位于页面上其他元素的绝对位置,我希望它在某处点击时消失但不在绝对定位的div(或其子元素之一)内。
我正在使用jQuery的事件传播($(document).on(...))来显示页面上的所有点击事件。
我想要一个通用的解决方案,而不是标签的白色或黑名单,类。
我不是在寻找“在绝对DIV和其他内容之间放置一个透明层”的解决方案,这将是我最后一次重新解决的问题。
THX
答案 0 :(得分:3)
$('html').click(function() {
//Hide whatever you want to hide
});
$('#your_div').click(function(e){
e.stopPropagation();
});
您也可以尝试this。
答案 1 :(得分:1)
您可以使用e.target查看已点击的内容
$(document).on("click", "*", function(e) {
if(e.target.id !== 'yourdivid'){
$('#yourdivid').hide();
}
//Hide whatever you want to hide
});
编辑 - 如果你还需要检查你可以做的儿童元素
$(document).on("click", "*", function(e) {
//check if the target is your div or a child of your div
if($(e.target).closest('div#yourdivid').length !== 1){
$('#yourdivid').hide();
}
//Hide whatever you want to hide
});
答案 2 :(得分:0)
jQuery的:
$(document).on("click", function(e) {
if($(e.target).closest('#box').length != 1){
$('#box').hide();
}
});
如果您直接点击body
上的某个地方,也可以这样做。
答案 3 :(得分:0)
$(document).on('click', function(e) {
if (!(e.target.id=='myID' || $(e.target).parents('#myID').length>0)) {
//do something
}
});