You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Div完成左滑动画后再设置display:none隐藏?

解决jQuery动画完成后再隐藏元素的问题

嘿,我明白你遇到的问题了!你现在的代码里,animate是异步执行的——也就是说,它不会等动画做完才继续跑后面的display:none代码,而是刚启动动画就立刻把元素隐藏了,所以你看不到滑动效果。而你写的wait函数是同步阻塞的,它会占着JS线程一直循环,浏览器根本没时间去渲染动画,最后等时间到了直接隐藏,自然也看不到滑动过程。

给你两个靠谱的解决方案,都是利用jQuery动画的异步回调机制,保证动画完全结束后再隐藏元素:

方法1:使用animate的complete回调参数

这是最直接的方式,把隐藏元素的逻辑放在动画的complete回调里,这个回调会在动画100%完成后才执行:

function slide_in(current_my) {
  $("#" + current_my).animate(
    { left: "510" }, // 动画属性
    { 
      duration: 750, // 动画时长
      complete: function() {
        // 动画结束后执行:隐藏元素
        $(this).hide(); // 等价于$(this).css("display", "none");
      }
    }
  );
}

方法2:使用promise链式调用

如果你的代码逻辑比较复杂,需要串联多个异步操作,用promise的方式会更灵活:

function slide_in(current_my) {
  $("#" + current_my)
    .animate({ left: "510" }, 750) // 启动动画
    .promise() // 获取动画的promise对象
    .done(function() {
      // 动画完成后执行隐藏
      $(this).hide();
    });
}

这两种方法都能完美实现你要的“先滑动,再隐藏”的效果,再也不会出现动画被跳过的问题啦~

内容的提问来源于stack exchange,提问作者Mike Pala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:18:17