Событие по клику повсюду на странице за пределами конкретного div - PullRequest
10 голосов
/ 26 ноября 2008

Я хотел бы скрыть div, когда пользователь щелкает в любом месте страницы за пределами этого div. Как я могу сделать это, используя raw javascript или jQuery?

Ответы [ 4 ]

30 голосов
/ 26 ноября 2008

Прикрепите событие щелчка к документу, чтобы скрыть div:

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

Присоедините событие щелчка к элементу div, чтобы запретить его распространение в документе:

$('#somediv').click(function(e) {
   e.stopPropagation();
});
2 голосов
/ 26 ноября 2008

Первая идея, в сыром javascript (от этот пост ):

<!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, работает как заявлено.

0 голосов
/ 26 ноября 2008

Если у div есть фокус, вы можете присоединиться к событию onblur.

0 голосов
/ 26 ноября 2008

Звучит так, будто вы хотите модальный диалог. Этот плагин jQuery http://code.google.com/p/simplemodal/ выглядит так, как будто у него есть потенциал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...