Находиться ли курсор над объектом, когда клик вне него (объекта)
Уважаемые форумчане. Помогите с реализацией следующей цепочки событий.
Нужно определить нажатие курсора вне объекта (div) и его дочерних объектов (например select-а с его option). Пробовал разные варианты, в т.ч. и с присвоением булевой величины при hover над div. Но проблема возникла тогда, когда раскрывающийся список больше блока, а именно при выборе option - переменная просто не изменяется ("замораживается"), даже при выходе из поля дива. Заранее признателен за любые варианты. |
Option не является "полноценным" элементом. Его задание для браузера имеет информационный характер, для отрисовки dropdown меню select.
Поэтому option, как и список всех опций select, не генерирует события мыши и, соответственно, эти события не "всплывают". Если вам нужно отловить изменение списка, попробуйте событие "change". А вообще, без объяснения какая перед вами стоит конкретная задача, помочь будет сложно. |
Цитата:
Суть же моей реализации, что то на подобии всплывающего блока, которые содержит селекты, которые могут выходить за пределы блока. И всеже, всеравно спасибо, за подсказку "Option не является "полноценным" элементом" - видимо именно в этом то и корень зла)). Может помучиться через target в событии самого документа? |
<html>
<head>
<style type="text/css">
*{
margin:0;
padding:0}
div{
width:100px;
height:30px;
position:absolute;
top:30%;
left:30%;
background:#1d1}
#wrapper{
background:#d11;}
</style>
<script type="text/javascript">
window.onload = function () {
var wrapper = document.getElementById('wrapper');
document.addEventListener('mousedown', function () { alert('Вы кликнули вне дива') }, false);
wrapper.addEventListener('mousedown', function (e) { e.stopPropagation() }, false);
}
</script>
</head>
<body>
<div id="wrapper">
<select>
<option>пункт 1</option>
<option>пункт 2</option>
<option>пункт 3</option>
<option>пункт 4</option>
<option>пункт 5</option>
<option>пункт 6</option>
</select>
</div>
</body>
</html>
|
Цитата:
|
| Часовой пояс GMT +3, время: 08:04. |