Javascript为动画添加延迟

时间:2014-10-07 03:19:24

标签: javascript jquery animation jquery-animate delay

我一直试图为我的一个JavaScript动画添加延迟,而我得到的只是一个错误 “对象不支持属性或方法'延迟'”。我正在测试IE 8的兼容性。

以下是我尝试过的代码。

来自

$('a',$(this)).stop().animate({'marginTop':'200'},1000);

$('a',$(this)).stop().delay(1000).animate({'marginTop':'200'},1000);

这是jsfiddle

最诚挚的问候,

弗农

3 个答案:

答案 0 :(得分:0)

这样的东西?

$(function(){$('a','body').on('click',function(e){
        e.preventDefault();
        $(this).delay(1000).animate({marginTop:'200px'},1000);
    })
});

SEE Fiddle:http://jsfiddle.net/7hxv3kd4/2/

答案 1 :(得分:0)

我在代码中进行了以下两项更改

  1. 替换为</br> to <br/>
  2. Jquery library添加到框架&amp; JSFiddle的扩展部分
  3. 我相信它运作正常,请参阅:http://jsfiddle.net/7hxv3kd4/3/

答案 2 :(得分:0)

你的小提琴有两个主要问题:

1)动画代码在jQuery之前设置。这就是你在控制台中获得TypeError: $ is not defined的原因。在代码之前的<head>中包含jQuery,没有任何包装函数:

<head>
    ....
    <script>
        /* jQuery here */
    </script>
    <script>
        $(function() {
            /* your code here */
        });
    </script>
    ....
</head>

2)您使用的是一个非常旧的jQuery版本1.3.2,没有延迟功能。这就是为什么在致电TypeError: undefined is not a function时获得.delay()的原因。 要么使用更新版本的jQuery(&gt; = 1.4.3),要么自己定义延迟函数:

$(function() {
    // original $.fn.delay copied from jQuery v1.4.3 source:
    jQuery.fn.delay = function( time, type ) {
        time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
        type = type || "fx";
        return this.queue( type, function() {
            var elem = this;
            setTimeout(function() {
                jQuery.dequeue( elem, type );
            }, time );
        });
    };
    /* Your code here now works with .delay() */
});

更新FIDDLE here,延迟时间为1500。