Я хотел бы скрыть div, когда пользователь нажимает в любом месте страницы за пределами этого div. Как это сделать, используя raw javascript или jQuery?
Событие на клике везде на странице за пределами конкретного div
Ответ 1
Прикрепите событие клика к документу, чтобы скрыть div:
$(document).click(function(e) {
$('#somediv').hide();
});
Прикрепите событие клика к элементу, чтобы остановить клики на нем от распространения на документ:
$('#somediv').click(function(e) {
e.stopPropagation();
});
Ответ 2
Первая идея, в raw 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, он работает как рекламируемый.
Ответ 3
Кажется, что вам нужен модальный диалог. Этот плагин jQuery http://code.google.com/p/simplemodal/ выглядит как потенциальный.
Ответ 4
Если div имеет фокус, вы можете прикрепить к событию onblur.