Корректное переключение dropdown
Значся чего хочется добиться. Есть дропдаун'ы. 1 открыли, другие все закрылись. Нажали вне открытого дропдауна - закрылся.
HTML:
<li class="dropdown-show"><a class="main-menu-item show-drop" data-drop="learn" href="#">Учебник <span class="icon-down-open-mini"></span></a>
<ul class="list-unstyled drop-menu" id="learn">
<li><a class="drop-item" href="#">Видео лекции и вебинары</a></li>
<li><a class="drop-item" href="#">Для чтения</a></li>
<li><a class="drop-item" href="#">Онлайн-поддержка</a></li>
</ul>
</li>
<li class="dropdown-show"><a class="main-menu-item show-drop" data-drop="update" href="#">Обновления <span class="icon-down-open-mini"></span></a>
<ul class="list-unstyled drop-menu" id="update">
<li><a class="drop-item" href="#">Системные</a></li>
<li><a class="drop-item" href="#">Обновление по модулям</a></li>
<li><a class="drop-item" href="#">Обновление по документам</a></li>
</ul>
</li>
Открываю нужный мне dropdown вот так:
$('.show-drop').click(function(){
var id = $(this).data('drop');
$('#'+id).fadeIn();
})
Я понимаю, что для закрывания нужно оперировать через $(document) + e.target, но чет допереть не могу, как корректно построить логику. Помогите пж |
закрытие по клику вне блока
shareware,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.drop-menu {
display: none;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
let prev;
$(document).click(function(event) {
let li = $(event.target).closest(".dropdown-show");
if (li.length) {
let a = $(event.target).closest(".show-drop")
if (a.length) {
let menu = a.next();
if (prev && menu[0] !== prev) $(prev).fadeOut();
a.next().fadeToggle();
prev = menu[0]
}
} else if (prev) $(prev).fadeOut();
});
</script>
</head>
<body>
<li class="dropdown-show"><a class="main-menu-item show-drop" data-drop="learn" href="#">Учебник <span class="icon-down-open-mini"></span></a>
<ul class="list-unstyled drop-menu" id="learn">
<li><a class="drop-item" href="#">Видео лекции и вебинары</a></li>
<li><a class="drop-item" href="#">Для чтения</a></li>
<li><a class="drop-item" href="#">Онлайн-поддержка</a></li>
</ul>
</li>
<li class="dropdown-show"><a class="main-menu-item show-drop" data-drop="update" href="#">Обновления <span class="icon-down-open-mini"></span></a>
<ul class="list-unstyled drop-menu" id="update">
<li><a class="drop-item" href="#">Системные</a></li>
<li><a class="drop-item" href="#">Обновление по модулям</a></li>
<li><a class="drop-item" href="#">Обновление по документам</a></li>
</ul>
</li>
</body>
</html>
|
Большое спасибо!
|
| Часовой пояс GMT +3, время: 20:57. |