鼠标悬停功能在队列中多次出现

时间:2014-11-19 14:58:37

标签: jquery hover fadein fadeout

我有这个代码在鼠标悬停时淡化另一个代码,并在光标离开查看区域时淡出。

示例:http://jsfiddle.net/3vgbemgu/

$('.under').hover(function () {
$('.over').fadeIn();
}, function () {
$('.over').fadeOut();
});
然而,如果用户将鼠标快速移动到该区域多次,则动画会创建一个队列,这意味着div会一个接一个地淡入淡出。更明显的是,这个动画在屏幕上有多个实例,或者淡入和淡出时间更长。

如何在第一次出现动画时重新触发动画?

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:0)

您可以改用.mouseenter().mouseleave()。它们只被触发一次。

$('.under').mouseenter(function() {
  $('.over').fadeIn();
}).mouseleave(function() {
  $('.over').fadeOut();
});