首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何取消jQuery鼠标保存操作

问如何取消jQuery鼠标保存操作
EN

Stack Overflow用户
提问于 2013-01-10 04:21:40
回答 2查看 1.1K关注 0票数 0

我想让div在鼠标滑出时滑回到开始位置,但如果鼠标再次滑过div,我想让div取消该操作并返回到展开位置。

我需要一些方法来停止这个动作:

代码语言:javascript
复制
    $(".logo").mouseleave(function(){
            $(".logo").animate({top: '-65px'}, 'slow')
    });

这里是小提琴:http://jsfiddle.net/gaPah/6/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-10 04:33:56

好了,终于把这件事搞清楚了。用户点击切换。Div打开。用户离开div。它等待700ms,然后关闭。如果用户中断它的关闭,它将重新打开。如果用户没有中断,它会重置。

注意:.delay()不能很好地使用.animate(),所以它变得很复杂,但我相信有一种更简单的方法可以做到这一点。

还请注意,我绑定了自定义事件openme,以避免编写相同的动画代码行两次(一次是在鼠标悬停时,一次是在单击按钮时)。

代码语言:javascript
复制
$('#btn_panel').click(function(event){
  $(".logo").trigger('openme');
});

$('.logo').on('openme', function(){
  $(this).stop().animate({top: 0}, 700);
}).on('mouseenter', function(){
  clearTimeout($(this).to);
  if (parseInt($(this).css('top'))>-65){
      $(this).trigger('openme');
  }
}).on('mouseleave', function(){
  var el=$(this);
  $(this).to=setTimeout(function(){
    el.animate({top: -65}, 700);
  },700);
});
票数 1
EN

Stack Overflow用户

发布于 2013-01-10 04:24:02

.stop()就是你的问题的答案!

因为您想要在当前位置停止动画,而不是快速完成它,所以需要使用

代码语言:javascript
复制
.stop(true, false)

在你的元素上。

以下是适用于您的案例的stop()的演示:http://jsfiddle.net/Ma5Xt/1/

下面是添加了延迟的示例:http://jsfiddle.net/Ma5Xt/2/

最后,仅当关闭动画当前正在运行时,此函数才允许在mouseenter上展开。否则,您需要单击div重新打开:http://jsfiddle.net/Ma5Xt/3/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14245758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档