让div消失,onClick“到处都是......”

时间:2012-03-12 14:12:37

标签: jquery

我的DIV位于页面上其他元素的绝对位置,我希望它在某处点击时消失但不在绝对定位的div(或其子元素之一)内。

我正在使用jQuery的事件传播($(document).on(...))来显示页面上的所有点击事件。

我想要一个通用的解决方案,而不是标签的白色或黑名单,类。

我不是在寻找“在绝对DIV和其他内容之间放置一个透明层”的解决方案,这将是我最后一次重新解决的问题。

THX

4 个答案:

答案 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)

http://jsfiddle.net/khKb5/

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
    }
});

FIDDLE