@artur012097

Как закрыть блок при нажатии на любое место?

Есть 3 вопроса.
1) Есть ссылки, при наведении на которые (onmouseover) появляется другой блок. Так вот нужно, чтобы после того, как курсор убирается с ссылки и наводится на блок, блок не закрывался.
2) Есть опять же ссылки, при клике с помощью цикла добавляется класс, и нужно, чтобы при клике на одну из ссылок, классы, которые добавились на другие ссылки удалились. То есть, класс добавился только на одну ссылку.
3) И последнее, открывается блок при клике на кнопку. Нужно закрыть его при нажатии на любое место, кроме этого блока. И все это на чистом JS.
  • Вопрос задан
  • 84 просмотра
Решения вопроса 2
Eugevin
@Eugevin
22 года, frontend как смысл жизни
Не уверен, что понял правильно, но смог набросать решение первого и третьего вопроса (второй бы занял чуточку extra-времени).



Вообще советую Вам почитать про делегирование событий Propagation, фазы захвата (баблинг, таргетинг и так далее) и capturing.
Ответ написан
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
Все эти вопросы смотрят лицом сюда https://vk.cc/4BIJUG

1. По событию мыши просто добавляй класс или рисуй элемент (createElement()).
2. Ответ по ссылке, всплытие и перехват. Но оптимально и просто — по клику очищать все вхождения (соседние) от класса active и добавлять его через event.target.
3. Ответ по ссылке. Это называется миссклик (в смысле так его гуглить можно, это термин).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@jfswift
Junior front-end dev.
событие onblur
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы