jQuery:animate(params,[duration],[easing],[callback])

Gnr*_*zik 2 javascript jquery

它看起来像回调函数被执行之后动画被调用,而不是在结束时间这是动画设置为.看起来函数在其中执行或引用无关紧要.

有没有办法指定在持续时间结束时启动回调函数,或者我需要启动一个计时器,该计时器将设置为与动画持续时间相同的值?

另一件事,假设,我想同样的功能,以动画无论是在淡入或淡出取决于CSS属性值,即保持通过顺利,整个想法的唯一的事情是事实,我不能调用同一个动画的元素,而在动画在跑.有什么方法可以停止执行动画?

到目前为止,文档中没有任何内容,想知道是否有人有同样的问题以及你是如何解决它

先感谢您.

Rob*_*t K 10

抱歉,您的外观类似于错误:回调仅在事件完成后执行.

从回调参数的jQuery文档:

动画完成时要执行的函数,对每个动画元素执行一次.

资源

在您的计算机上尝试以下代码.如果这不能使你确信文档是正确的,那么我不知道会发生什么.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>jQuery Animate, Callback Test</title>
  </head>
  <body>
    <script type="text/javascript"
      src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
      $(function() {
        $('<div id="mytest">Incoming!</div>')
          .appendTo(document.body)
          .css('font-size', '14px')
          .animate({ fontSize: '42px' }, 1500, 'linear', function() {
            $(this).text('Boom!').css('color', 'red');
          });
      });
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

文字会变得更大,然后说"繁荣!" 并在动画完成时变为红色.


默认情况下,动画将继续运行,因为存在队列.队列只是jQuery循环的待处理动画列表,直到它为空.要放弃队列,您需要使用animate的一个重载版本:

$(this).animate({
  opacity: 1.0,
  width: '234px'
}, {
  queue: false, // This skips the queue
  duration: 'fast',
  complete: function() { alert('the callback'); } // Your callback goes here...
});
Run Code Online (Sandbox Code Playgroud)

此外,必须在没有括号(此片段的周围卷曲标记)的情况下传递命名函数,否则将执行该函数.

var temp = myFunc(); // gets called and the result is assigned...
var temp = myFunc;   // but this doesn't get called, and the function is passed.
Run Code Online (Sandbox Code Playgroud)