使用 jQuery 悬停和动画动画填充顶部

animating padding top using jQuery hover and animate

我真的不知道我做错了什么,我已经查看了这里关于动画填充顶部的其他一些问题,我已经尝试了所有这些问题,但似乎对我没有任何作用,所以有我缺少某种错误。控制台没有错误。

$(document).ready(function() {
  $('.target-div').hover({
    $(this).animate({
      paddingTop: '+=5em'
    }, 500);
  }, function() {
    $(this).animate({
      paddingTop: '0em'
    }, 500);
  });
});
.target-div {
  background: #337ab7;
  color: #fff;
  cursor: pointer;
  border-bottom: 1px solid #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="target-div">One</div>
<div class="target-div">Two</div>
<div class="target-div">Three</div>

我确实在控制台中收到错误消息。看来你有一个语法错误(你在 hover() 的第一个参数中忘记了 function()。试试这个:

$(document).ready(function() {
  $('.target-div').hover(function() {
    $(this).animate({
      paddingTop: '+=5em'
    }, 500);
  }, function() {
    $(this).animate({
      paddingTop: '0em'
    }, 500);
  });
});

几乎拥有它。注意第二行的 function()...

$(document).ready(function() {
  $('.target-div').hover(function(){
    $(this).animate({
      paddingTop: '+=5em'
    }, 500);
  }, function() {
    $(this).animate({
      paddingTop: '0em'
    }, 500);
  });
});
.target-div {
  background: #337ab7;
  color: #fff;
  cursor: pointer;
  border-bottom: 1px solid #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="target-div">One</div>
<div class="target-div">Two</div>
<div class="target-div">Three</div>

如果你想避免多次悬停 in/out 时出现多个动画,你需要在触发动画之前添加 .stop()...

$(document).ready(function() {
  $('.target-div').hover(function(){
    $(this).stop().animate({
      paddingTop: '+=5em'
    }, 500);
  }, function() {
    $(this).stop().animate({
      paddingTop: '0em'
    }, 500);
  });
});
.target-div {
  background: #337ab7;
  color: #fff;
  cursor: pointer;
  border-bottom: 1px solid #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="target-div">One</div>
<div class="target-div">Two</div>
<div class="target-div">Three</div>