jQuery中animate动画第二次点击事件没反应

用animate做点击翻页动画时发现第二次点击事件动画没反应,而第一次点击有动画效果,代码如下:

复制代码 代码如下:
$(".page").stop().animate({top:“-300px”}, 800, 'easeInOutExpo');

第二次点击事件动画没反应的原因:top是page元素顶部相与其父元素顶部的距离,第一次点击后,page元素顶部已经移动到距其父元素顶部
-300px的位置,第二次点击时的并不是page在移动后的位置继续t移动-300px,而是当前的位置据其父元素顶部-300px。显然第一次已经移
动到top:-300px的位置,第二次的top:-300px移动距离为0,所以没反应。
解决方法:

复制代码 代码如下:
$(".page").stop().animate({top:“-=300px”}, 800, 'easeInOutExpo');

top:“-=300px”,这样第二次点击时会在第一次点击后的位置上继续移动-300px。

如果动画移动的距离是变量,就不能用“-=变量名”来写了:

1
2
3
4
5
6
function down() {
var page_h=$(".page").height(); //687
var page_top=parseInt($(".page").css("top")); //0
var move=wrap_top+page_h;
$(".page").stop().animate({top:move}, 800, 'easeInOutExpo');
};

var page_h=$(".page").height();获取page的高度并赋值给page_h,得到的值是数值;
var page_top=parseInt($(".page").css("top"));获取当前page顶部到其父元素顶部的距离并赋值给page_top,(parseInt:去掉"PX");
var move=wrap_top+page_h;计算移动距离;

这样每次动画都会重新获取“当前page顶部到其父元素顶部的距离”。

注意:$(".page").height()的值是不带px单位的,$(".page").css("top"))的值是带px单位的,需要parseInt将单位px像素单位删除才能计算。

以上所述就是本文的全部内容了,希望大家能够喜欢。

最新文章

  1. 移动Web触摸与运动解决方案AlloyTouch开源啦
  2. Windows Server 2008 R2 主域控制器委派DNS到子域控控制器
  3. Git使用指南(1)——Git配置命令
  4. RVM 多版本Ruby管理-Gentoo
  5. iOS Xcode个人常用插件
  6. [原]quick2.25让描边闪起来
  7. Android 设置旋转朝向
  8. python 路径
  9. source insight 里编辑的时候,每次粘贴后,光标停留在粘贴内容的左面
  10. Maven下使用Jetty进行Debug
  11. 8个强大的基于Bootstrap的CSS框架
  12. artDialog的几种基本使用
  13. SQLite新建数据库及txt文件(CSV文件)导入
  14. (转载)Javascript 中的非空判断 undefined,null, NaN的区别
  15. 常用ajax样例
  16. C# 之 @ Assembly
  17. 线性素数筛 ACM-ICPC 2018 南京赛区网络预赛 J Sum
  18. LCS(最长公共子序列)问题
  19. 1076 Forwards on Weibo (30 分)
  20. yii2 查询数据库语法

热门文章

  1. Andorid APK反逆向解决方案---梆梆加固原理探寻
  2. 笔记整理--HTTP Header 详解
  3. iOS图片缓存框架SDWebImage
  4. Bootstrap环境及屏幕适配-(一)
  5. openstack创建实例测试步骤
  6. Lua打印Table的数据结构工具类
  7. FMDB 查询是否存在某个表,或某个数据
  8. js中焦点的含义是什么
  9. E/WindowState(643): getStack: Window{33f867f8 u0 Starting com.xxxxxx.ooooo}
  10. 转发:招聘一个靠谱的 iOS