Почему при попытке наведения мыши на другой пункт меню окно пропадает?

241
06 августа 2018, 08:50

При наведении на кнопку создается меню и убирается через 7 секунд, если с меню не воздействуют, но, как только на меню навели мышью, таймер очищается т соответственно окно надо убрать, когда пользователь перестает воздействовать с ним, проблема в том, что когда пытаешься направить мышь на другой пункт меню, само меню пропадает. Я думал, что это возможно из-за всплытия, отменил, не помогло. В чем проблема?

var gear = document.querySelector('.settings__icon--3'); 
gear.addEventListener('mouseover', function() { 
	var menu = document.querySelector('.settings__hidden-menu'); 
	menu.style.display = 'block'; 
	var timeClose = setTimeout(function() { 
		menu.style.display = 'none'; 
	}, 7000); 
	menu.addEventListener('mouseover', function() { 
		clearTimeout(timeClose); 
	}); 
  menu.addEventListener('mouseout', function(event) { 
		menu.style.display = 'none'; 
    event.stopPropagation(); 
	}); 
})
.settings__icon--3 { 
  width: 30px; 
  height: 30px; 
  background-color: red; 
  margin: 40px; 
} 
 
.settings__hidden-menu { 
  width: 200px; 
  height: 400px; 
  background-color: red; 
  display: none; 
}
<div class="settings__icon--3"> 
   
</div> 
 
<div class="settings__hidden-menu"> 
  <li>text</li> 
  <li>text</li> 
  <li>text</li> 
  <li>text</li> 
  <li>text</li> 
  <li>text</li> 
  <li>text</li> 
  <li>text</li> 
  <li>text</li> 
  <li>text</li> 
</div>

Answer 1

Дело не во всплытие а в поведении обработчиков mouseover и mouseout.
Смысл в том что mouseout вызывается всякий раз когда вы наводите курсор на любой другой элемент, даже внутри контейнера.
Решение - используйте вместо mouseover и mouseout, mouseenter и mouseleave соответственно.

READ ALSO
Как подключить bootstrap select?

Как подключить bootstrap select?

На форуме показан пример, что он изображён так

309
привязать modal к клавишам

привязать modal к клавишам

ЗдрасьтеВообщем меня интересует возможность привязки модального окна к клавишам виртуальной клавиатуры, не вставляя кусок самого кода...

175
Сравнить данные из input и data-attr

Сравнить данные из input и data-attr

Есть данные которые мы передаем в атрибут, в таком виде data-date=" 2806

228