请教jQuery animate回调函数问题

winzond 2020-04-26 11:58:10
$(this).prevAll(".layui-tab-title").animate({ left: "+=800px" }, function () {
setTabsCtrl()
});

setTabsCtrl()里有个获取$(".layui-tab-title").offset().left,这个值居然是动画前的,我确定语句应该是没错的,再次执行动画后,仍然获取到动画前的值,比如当前是200,+=800后,该是1000,它却只有200,再次执行获取1000。这回调函数应该没有用错呢,请教大神,怎么会这样呢?
...全文
253 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
winzond 2020-04-27
  • 打赏
  • 举报
回复
$(this).prevAll(".layui-tab-title").animate({ left: "+=800px" }, function () {
    console.log($(this).offset().left);
});
这样也只能获取到动画前的值
_念_ 2020-04-27
  • 打赏
  • 举报
回复
动画执行了吗?浏览器工具看看,你的元素的left值是不是已经变了。还有你的$(this)你看一下是哪个元素,是不是你动画执行的那个
winzond 2020-04-27
  • 打赏
  • 举报
回复

$(this).prevAll(".layui-tab-title").animate({ left: "+=800px" }, {
    done: function () {
        console.log($(this).position().left);
    }
});
崩溃啊,这样也不行
winzond 2020-04-27
  • 打赏
  • 举报
回复
$(this).prevAll(".layui-tab-title").animate({ left: "+=800px" }, {
    complete: function () {
        console.log($(this).position().left);
    }
});
写成这样,还是动画之前的值
winzond 2020-04-27
  • 打赏
  • 举报
回复
用CSS3+jQuery css()方法,有办法获取到动画后的值吗?
winzond 2020-04-27
  • 打赏
  • 举报
回复
谢谢大家,问题找到了,是CSS3动画与jQuery动画冲突,导致获取的值不对。我测试过,jQuery css()方法没有回调函数,如果紧接其后获取值,也是错的,看来只能修改layu CSS把transition: all .2s; -webkit-transition: all .2s;删除,使用jQuery animate()来操作。
  • 打赏
  • 举报
回复
你动画设置的是left,动画后你不也应该获取left吗? $(".layui-tab-title").css("left")
winzond 2020-04-27
  • 打赏
  • 举报
回复
winzond 2020-04-27
  • 打赏
  • 举报
回复
winzond 2020-04-27
  • 打赏
  • 举报
回复
引用 4 楼 nian_cj 的回复:
动画执行了吗?浏览器工具看看,你的元素的left值是不是已经变了。还有你的$(this)你看一下是哪个元素,是不是你动画执行的那个
动画确定执行了,left确定改变了,而且很明显的视觉感觉。确定$(this)就是动画元素,无论是理论上还是按F12查看都确定是它,如果调用函数还有出错的可能,这里用$(this)是绝对不会错的,1000%的确定的。我只加载了layui,我把layui加载语句注释了,结果还是一样。真是崩溃,完全找不出原因了

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧