我有这个代码在鼠标悬停时淡化另一个代码,并在光标离开查看区域时淡出。
示例:http://jsfiddle.net/3vgbemgu/
$('.under').hover(function () {
$('.over').fadeIn();
}, function () {
$('.over').fadeOut();
});
然而,如果用户将鼠标快速移动到该区域多次,则动画会创建一个队列,这意味着div会一个接一个地淡入淡出。更明显的是,这个动画在屏幕上有多个实例,或者淡入和淡出时间更长。
如何在第一次出现动画时重新触发动画?
答案 0 :(得分:1)
您可以使用jquery .stop():
$('.under').hover(function() {
$('.over').stop(true, true).fadeIn();
}, function() {
$('.over').stop(true, true).fadeOut();
});

.frame {
position: absolute;
width: 400px;
height: 300px;
}
.under {
width: 100%;
height: 100%;
z-index: 1;
}
.under img {
width: 100%;
height: 100%;
}
.over {
position: absolute;
width: 100%;
height: 100%;
font-size: 36px;
text-align: center;
color: yellow;
background: rgba(64, 64, 64, 0.5);
top: 0;
left: 0;
z-index: 2;
display: none;
}
span {
margin-left: auto;
margin-right: auto;
background-color: white;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="frame">
<div class="under">
<img src="http://www.thetimes.co.uk/tto/multimedia/archive/00342/114240651_cat_342943c.jpg">
<div class="over">
<a href="http://www.w3schools.com/css/css_positioning.asp">
</br><span>Link 1</span>
</a>
</br>
</br>
</br><a href="http://smallbusiness.chron.com/stretch-image-horizontally-css-43652.html"><span>Link 2</span></a>
</div>
</div>
</div>
&#13;
答案 1 :(得分:0)
您可以改用.mouseenter()和.mouseleave()。它们只被触发一次。
$('.under').mouseenter(function() {
$('.over').fadeIn();
}).mouseleave(function() {
$('.over').fadeOut();
});