Мне нужно было написать выпадающее меню в javascript, потому что есть несколько аспектов, которые нельзя сделать с помощью CSS.Я столкнулся с этой ошибкой, когда наведу курсор мыши на мой пункт меню, всплывающее подменю, я щелкаю элемент, и он начинает мигать.
Я знаю, что это потому, что я все еще в пределах этого элемента, который снова вызывает мышь.Что я могу сделать в этом случае?
Я не хочу устанавливать таймер ожидания, а затем снова открывать выпадающее меню ...
angular.module('app',[])
.controller('mainCtrl', function() {
var vm = this;
vm.showSubmenu = false;
vm.toggleMenu = function() {
vm.showSubmenu = !vm.showSubmenu;
}
vm.changeState = function() {
//$state.go('blablabla');
vm.showSubmenu = false;
}
})
.submenu {
background: lightblue;
position: absolute;
top: 45px;
left: 0;
padding: 20px;
line-height: 20px;
visibility: hidden;
}
.submenu.active-sub {
visibility: visible;
}
.menu {
list-style-type: none;
}
ul li {
background: grey;
line-height: 30px;
width: 150px;
}
.submenu ul {
position: relative;
float: left;
left: 0;
}
<html ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.5/angular.min.js"></script>
</head>
<body>
<div ng-controller="mainCtrl as vm">
<ul class="menu">
<li ng-mouseenter="vm.toggleMenu()" ng-mouseleave="vm.toggleMenu()">OPEN SUBMENU
<div class="submenu" ng-class="{'active-sub':vm.showSubmenu}">
<ul>
<li><a href="#" ng-click="vm.changeState()">Link 1</a></li>
<li><a href="#" ng-click="vm.changeState()">Link 2</a></li>
<li><a href="#" ng-click="vm.changeState()">Link 3</a></li>
</ul>
</div>
</li>
</ul>
</div>
</body>
</html>