【问题标题】:jQuery Animate() hover?jQuery Animate() 悬停?
【发布时间】:2012-12-03 07:13:40
【问题描述】:

我第一次使用 jQuery,特别是在我自己的网站上,我正在使用动画功能使电子邮件选项卡在悬停时略微向下移动(查看右上角:http://www.tommaxwell.me )。但是,我不知道如何让动画在完成后暂停。我可以制作第一个动画以及让它返回到其原始状态所需的动画,但我希望它在用户将光标移开后返回到其原始状态。这是代码,请记住,我知道为什么它不起作用,我只是不知道解决方案,因为我是 jQuery 新手。

$("#emailme").hover(function(){
  $("#emailme").animate({
    paddingTop: "15px"
  }, 100, function() {
    $("#emailme").animate({
        paddingTop: "10px"
    }, 100)
  });
});

【问题讨论】:

    标签: javascript jquery jquery-animate


    【解决方案1】:

    hover 的第二个参数是当用户将鼠标移开时调用的回调。

    $("#emailme").hover(function() {
        $(this).animate({
            paddingTop: "15px"
        }, 100);
    }, function() {
        $(this).animate({
            paddingTop: "10px"
        }, 100)
    });
    

    所以总体思路是:

    $('selector').hover(function(){
        //stuff to do on mouse in
    }, function(){
        //stuff to do on mouse out
    });
    

    【讨论】:

      【解决方案2】:

      您应该使用函数$element.mouseover(fn)$element.mouseout(fn)

      所以应该是这样的:

      $("#emailme").mouseover(function(){
          $(this).animate({
              paddingTop: "15px"
          }, 100);
      }).mouseout(function(){
          $(this).animate({
              paddingTop: "10px"
          }, 100);
      });
      

      这意味着将事件处理程序附加到两个不同的事件:当您将鼠标移到元素上时,它会展开;当您将鼠标移出时,它会减去 - 就像您想要的那样。

      【讨论】:

      • 谢谢!只要 SO 允许,我就会选择你的答案作为正确的答案。 :)
      • 上面的答案也是正确的,但我更喜欢通过将不同的操作移动到不同的事件绑定来分隔事物,因为这有助于以后的代码维护。
      • @VytautasButkus 悬停签名无论如何都做同样的事情。它绑定了 mouseenter 和 mouseleave 处理程序,并为您节省了几次击键。它们是单独的事件绑定。
      • @Asad - 是的,我知道这一点,但正如我已经说过的,“节省一些击键”在以后的代码可读性方面并非如此。
      • @VytautasButkus 包含mouseout这个词如何提高可读性?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2018-03-23
      • 1970-01-01
      • 2011-12-22
      • 2013-09-15
      • 2013-12-24
      相关资源
      最近更新 更多