在特定div之外的页面上的任意位置单击事件

时间:2008-11-26 16:06:52

标签: javascript jquery

当用户点击该div之外的页面上的任何位置时,我想隐藏div。我怎么能用原始的javascript或jQuery做到这一点?

4 个答案:

答案 0 :(得分:30)

将单击事件附加到文档以隐藏div:

$(document).click(function(e) {
   $('#somediv').hide();
});

将点击事件附加到div,以阻止点击它传播到文档:

$('#somediv').click(function(e) {
   e.stopPropagation();
});

答案 1 :(得分:2)

第一个想法,在原始javascript(来自this post):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Style-Type" content="text/css">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <style type="text/css">
      <!--
      #mydiv{
        background-color: #999999;
        height: 100px;
        width: 100px;
      }
      -->
    </style>
    <script type="text/javascript">
      document.onclick=check;
      function check(e)
      {
        var target = (e && e.target) || (event && event.srcElement);
        var obj = document.getElementById('mydiv');
        if(target!=obj){obj.style.display='none'}
      }
    </script>
  </head>
  <body>
    <div id="mydiv">my div</div>
  </body>
</html> 

使用IE6和FireFox3.1进行测试,它确实像宣传的那样工作。

答案 2 :(得分:0)

听起来好像你想要一个模态对话框。这个jQuery插件http://code.google.com/p/simplemodal/看起来很有潜力。

答案 3 :(得分:0)

如果div具有焦点,则可以附加到onblur事件。