我正在尝试制作一个javascript横幅。我在div中有3个图像,其中包含ID#img1,#img2 n#img3。
<script src="scripts/jquery-latest.min.js" type="text/javascript"></script>
<script>
var AnimState = true;
var AnimTime = 2000;
var AnimDelay = 3000;
$(document).ready( function()
{
$('#image img').hide();
$('#img3').show();
Show1();
});
function Show1()
{
if( AnimState === true )
{
$("#img3").fadeOut(AnimTime);
$("#img1").fadeIn(AnimTime, Show2);
}
}
function Show2()
{
if( AnimState === true )
{
$("#img1").fadeOut(AnimTime);
$("#img2").fadeIn(AnimTime, Show3);
}
}
function Show3()
{
if( AnimState === true )
{
$("#img2").fadeOut(AnimTime);
$("#img3").fadeIn(AnimTime, Show1);
}
}
$('#btn1').click( function()
{
AnimState = !AnimState;
Show1();
});
</script>
工作正常。唯一的问题是,现在我想在fadein效果之后添加延迟,但尝试差异我失败了。那么可以做些什么来增加几分钟的延迟然后只调用下一个函数即。我想在$("#img3").fadeIn(AnimTime)
之后添加延迟,在延迟之后只调用Show1()
函数
答案 0 :(得分:5)
好的,试试这个。动画制作完成后:
$("#img1").fadeOut(AnimTime);
$("#img2").fadeIn(AnimTime);
setTimeout(Show3, 30000); //delays next call for 30 seconds
答案 1 :(得分:4)
我为此做的是在这个要点:http://gist.github.com/467030
本质上它是为了让你创建一个完全不相关的函数数组,动画与否......然后以给定的间隔逐个执行它们。
// create an array of functions to be executed
// everything in each step would be executed simultaneously
var myFuncs = [
// Step #1
function () {
$("#img1").fadeOut(200);
doSomething();
doSomethingElseAtTheSameTime();
},
// Step #2
function () {
doOtherStuff();
},
// Step #3
function () {
woohoo();
}
];
// then, the function in that gist:
// Simple function queue runner. Just pass me an array of functions and I'll
// execute them one by one at the given interval.
var run_queue = function (funcs, step, speed) {
step = step || 0;
speed = speed || 500;
funcs = funcs || [];
if (step < funcs.length) {
// execute function
funcs[step]();
// loop it
setTimeout(function () {
run_queue(funcs, step + 1);
}, speed);
}
return;
};
// run them.
run_queue(myFuncs, 0, 1000);
显然,这比你想要的简单。但基本思想非常有效。即使使用jQuery queue()也只适用于对相同项目执行后续动画。这些可以是完全不相关的函数执行。
答案 2 :(得分:1)
试试这个
$("#img3").delay('1000').fadeOut(AnimTime);
你必须做一个睡眠功能看看here这是一个jQuery plygin
用法:
$.sleep(3, function(){alert("I slept for 3 seconds!");});
答案 3 :(得分:0)
使用$("#img3").fadeIn(AnimTime).delay('1000')
1000
以毫秒为单位。
答案 4 :(得分:0)
setTimeout(MyFunction(), 3000);
我会这样做只是在执行MyFunction之前暂停3秒。希望这会有所帮助...