首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery动画onStart回调

jquery动画onStart回调
EN

Stack Overflow用户
提问于 2011-09-29 11:24:38
回答 5查看 7.5K关注 0票数 3

jquery动画方法是否有onStart回调。我知道完整的回调,但没有看到任何地方可以使用其他回调,如onStart或initialize。

我想要动画回调,因为当我调用onStart ()时,它可能不会立即开始,而是由于之前的动画没有完成而排队。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-29 11:38:27

一旦您调用了animate方法,它就会在您的其他javascript代码运行的同时运行。因此,等效于使用onStart回调,就是将您想要运行的代码立即放在动画方法之后。此外,您还可以使用一个'step‘函数。http://api.jquery.com/animate/#step ..我还没有用过它,但似乎你可以检查你正在处理的初始CSS值,并且只根据它来执行代码。但是,如果你要对很多部分进行动画处理,这可能会是一个性能问题。

票数 -3
EN

Stack Overflow用户

发布于 2013-03-10 07:25:35

我在过去使用过这种方法,它似乎工作得很好。希望它能为你工作。

编辑(2016/12/06 - OP请求的更好示例)

HTML:

代码语言:javascript
复制
<div class="tile">X</div>

CSS:

代码语言:javascript
复制
body {
  position: relative;
}

.tile {
  position: absolute;
  display: block;
  padding: 20px;
  background: aqua;
  text-align: center;
  font-size: 32px;
  font-family: sans-serif;
}

JavaScript:

代码语言:javascript
复制
function doMe() {
  console.log('We called a callback function!');
}

$('#tiles .tile').animate({
  'left': '+=500px'
}, {
  duration: 6000,
  step: function(now, fx) {
    var data = $(this).data('anistart');
    if (!data) {
      console.log('We started!');
      $(this).data('anistart', {
        start: fx.start,
        end: fx.end
      });
      doMe();
    }
    console.log('We\'re stepping...');
  },
  complete: function() {
    var data = $(this).data('anistart');
    if (data.end !== parseFloat($(this).css('left'))) {
      $(this).css('left', data.end);
    }
    $(this).removeData('anistart');
    console.log('We ended!');
  }
});

在step函数上,我测试对象是否有预先设置的数据。如果不是,我设置它,然后我们可以调用/处理任何东西(例如,你的回调)

在完整的函数上,我确保位置是它应该的位置,如果不是,我设置它。您很可能会取消测试并设置它,但不确定哪一个对性能的影响更大(检查或css集)。

所以不管是什么情况,你在start上设置一个变量,如果它没有设置,那么你就知道它是第一次……即它正在被初始化。

演示:Example of jQuery animate onStart callback

票数 1
EN

Stack Overflow用户

发布于 2013-09-04 16:22:27

.animation()具有未记录的start选项

代码语言:javascript
复制
$('.box').animate({left:100},{
    duration:500,
    start:function(){
        console.log('start');
    },
    complete:function(){
        console.log('end');
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7592105

复制
相关文章

相似问题

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