Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2011, 14:51
Аспирант
Отправить личное сообщение для kichSman Посмотреть профиль Найти все сообщения от kichSman
 
Регистрация: 16.10.2009
Сообщений: 69

Находиться ли курсор над объектом, когда клик вне него (объекта)
Уважаемые форумчане. Помогите с реализацией следующей цепочки событий.

Нужно определить нажатие курсора вне объекта (div) и его дочерних объектов (например select-а с его option). Пробовал разные варианты, в т.ч. и с присвоением булевой величины при hover над div. Но проблема возникла тогда, когда раскрывающийся список больше блока, а именно при выборе option - переменная просто не изменяется ("замораживается"), даже при выходе из поля дива.

Заранее признателен за любые варианты.
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2011, 15:00
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Option не является "полноценным" элементом. Его задание для браузера имеет информационный характер, для отрисовки dropdown меню select.

Поэтому option, как и список всех опций select, не генерирует события мыши и, соответственно, эти события не "всплывают".

Если вам нужно отловить изменение списка, попробуйте событие "change".
А вообще, без объяснения какая перед вами стоит конкретная задача, помочь будет сложно.
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2011, 15:07
Аспирант
Отправить личное сообщение для kichSman Посмотреть профиль Найти все сообщения от kichSman
 
Регистрация: 16.10.2009
Сообщений: 69

Сообщение от Андрей Параничев Посмотреть сообщение
Если вам нужно отловить изменение списка, попробуйте событие "change".
А вообще, без объяснения какая перед вами стоит конкретная задача, помочь будет сложно.
Событие change в моем случае не вариант, хотя при этом я и пытался повторно приравнивать переменную в true (т.е. что курсор остается над боксом) - всеравну не помогло.
Суть же моей реализации, что то на подобии всплывающего блока, которые содержит селекты, которые могут выходить за пределы блока.
И всеже, всеравно спасибо, за подсказку "Option не является "полноценным" элементом" - видимо именно в этом то и корень зла)).
Может помучиться через target в событии самого документа?
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2011, 15:16
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

<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>
Ответить с цитированием
  #5 (permalink)  
Старый 04.09.2011, 16:18
Аспирант
Отправить личное сообщение для kichSman Посмотреть профиль Найти все сообщения от kichSman
 
Регистрация: 16.10.2009
Сообщений: 69

Сообщение от Magneto Посмотреть сообщение
...
Просто супер, спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск