JQuery разные исчезают для различных зависания
Я хотел бы сделать разные fadein и fadeout для элементов "li" в "navbar". Я имею в виду: если мышь вводит или мышь оставляет "li", делайте затухание. но если я перейду от одного "li" к другому "li", не исчезай. Является ли это возможным? Большое спасибо за каждый ответ.
var opened = 0;
$("li").mouseenter(function(e) {
opened = 1;
if (opened == 1) {
$(this).find(".menu-full").fadeIn(0);
} else {
$(this).find(".menu-full").fadeIn(300);
}
});
$("li").mouseleave(function(e) {
opened = 0;
if (opened == 1) {
$(this).find(".menu-full").fadeOut(0);
} else {
$(this).find(".menu-full").fadeOut(300);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<ul>
<li><a href="#">News <span class="caret"></span></a>
<div class="menu-full">
...
</div>
</li>
<li><a href="#">Reviews <span class="caret"></span></a>
<div class="menu-full">
...
</div>
</li>
<li><a href="#">Events</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Media</a></li>
<li><a href="#">Artist</a></li>
</ul>
Мне бы хотелось, чтобы, когда мышь входила или выходила из элемента "li", запускался fade300. в то время как если мышь переходит от одного элемента "li" к другому, затухание не начинается.
1 ответ
Если бы я хорошо понял ваш вопрос, вы могли бы создать класс (и назвать его, например, enter
) и положи в свой <ul>
когда вы входите на <ul>
, затем удалите его, когда уходите.
Кроме того, вы можете создать переменную, которая отслеживает <li>
в котором вы находитесь в mouseenter / mouseleave: когда вы проходите через <li>
s вы можете сделать простой переход с 0 секунд, а если вы выходите из <ul>
сделать затухание с 300 мс.
Я добавил немного CSS только для того, чтобы помочь вам понять, когда вы входите в <ul>
& <li>
, Вы можете удалить их.
$(function() {
var menuFull;
$("li").hover(function(e){
var $this = $(this);
menuFull = $(".menu-full", $this);
if($this.closest("ul").hasClass("enter")) {
$(".menu-full").fadeOut(0);
menuFull.fadeIn(0);
}
});
$("ul").hover(function(){
var $this = $(this);
$this.toggleClass("enter");
menuFull.fadeToggle(300);
});
});
/* Start styles for demo */
*{
padding:0;
margin:0;
}
body{
display:flex;
height: 100vh;
align-items: center;
}
ul{
margin:auto;
float:left;
min-height: 1px;
background-color:#cccccc;
padding:0;
}
li{
padding:10px;
list-style: none;
}
/* end styles for demo */
.menu-full{
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li><a href="#">News <span class="caret"></span></a>
<div class="menu-full">
menu-full
</div>
</li>
<li><a href="#">Reviews <span class="caret"></span></a>
<div class="menu-full">
menu-full
</div>
</li>
<li><a href="#">Events</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Media</a></li>
<li><a href="#">Artist</a></li>
</ul>
Надеюсь, поможет.