Javascript为动画添加延迟
Javascript add delay to animate
我一直试图给我的一个JavaScript动画添加延迟,但我得到的只是一个错误,上面写着"对象不支持属性或方法'delay'"。顺便说一下,我正在IE 8兼容性上测试这个。
下面是我尝试过的提到的代码。
来自
$('a',$(this)).stop().animate({'marginTop':'200'},1000);
至
$('a',$(this)).stop().delay(1000).animate({'marginTop':'200'},1000);
这是小提琴。
谨致问候,
Vernon
小提琴上有两个主要问题:
1) 动画代码是在jQuery之前设置的。这就是为什么您在控制台中获得TypeError: $ is not defined
。在代码之前将jQuery包含在<head>
中,并且不带任何包装函数:
<head>
....
<script>
/* jQuery here */
</script>
<script>
$(function() {
/* your code here */
});
</script>
....
</head>
2) 您使用的是一个非常旧的jQuery版本1.3.2,没有延迟功能。这就是为什么您在呼叫.delay()
时会得到TypeError: undefined is not a function
。要么使用更新版本的jQuery(>=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,插入延迟1500。
类似的东西?
$(function(){$('a','body').on('click',function(e){
e.preventDefault();
$(this).delay(1000).animate({marginTop:'200px'},1000);
})
});
查看Fiddle:http://jsfiddle.net/7hxv3kd4/2/
我对代码进行了以下两项更改,
- 更换
</br> to <br/>
- 将
Jquery library
添加到Frameworks&JSFiddle的扩展部分
我相信它运行良好,请参阅:http://jsfiddle.net/7hxv3kd4/3/
相关文章:
- 为JS函数添加延迟
- 如何为.css状态的更改添加延迟
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- 在单击下一个按钮之前,在JavaScript代码中添加5秒的延迟
- ngAnimate-如何删除NgLeave添加的延迟
- 如何使用延迟添加/删除类
- 我在向jquery脚本添加延迟时遇到问题
- 如何在使用flash音乐播放器的母版页中自动播放音乐之前添加延迟
- 在添加类之后,为DIPLAY内容添加延迟
- 如何在启动Mocha测试用例之前添加延迟
- Fullpage.js.添加滚动延迟
- 如何添加延迟计时器
- 香草JS:延迟点击事件以添加动画
- 尝试向 jQuery AJAX 请求添加延迟
- 如何在 AJAX 函数中添加延迟函数
- 如何使用 JQuery 添加延迟?(让它等待 5 秒再继续)
- 如何在 if else 语句期间添加暂停/延迟
- 如何在引导下拉列表悬停时添加延迟
- 在 Javascript/jQuery 中的循环末尾添加一个延迟
- 如何将延迟添加到此JQuery事件