jQuery 中的计时/等待

发布于 2024-10-16 12:15:36 字数 158 浏览 7 评论 0原文

我正在编写一个横幅旋转器,我希望它在几秒钟后在几张图片之间循环。 jQuery 是否有等待然后调用回调的东西?我可以看到 .delay 方法,但它似乎没有回调函数。或者也许我应该使用依赖于浏览器的功能?或者也许 javascript 已经包含了我需要的函数? 我是 JavaScript 新手:-| 。

I am writting a banner rotator and I want it to cycle among few pictures after few seconds. Does jQuery has something for waiting and then calling the callback? I can see the .delay method, but it doesn't seem to have a callback function. Or maybe I should use a browser-dependant function? Or maybe javascript already contains a function that I need?
I am new to javascript :-| .

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

与酒说心事 2024-10-23 12:15:36

您始终可以使用本机 javascript:

setTimeout(function(){ /* do your stuff */ }, 1000);

您可以使用 mixins 获得一些乐趣:

var timeoutCallback = function() {
    this.foo = 5;
}

var scheduleTimeout = function(obj, delay) {
    setTimeout(function(){ timeoutCallback.call(obj); }, delay);
}

var myobj = { foo: 1, bar: 2 }
scheduleTimeout(myobj, 1000); // myobj.foo becomes 5 after 1000ms delay

You can always use the native javascript:

setTimeout(function(){ /* do your stuff */ }, 1000);

You can have some fun with mixins:

var timeoutCallback = function() {
    this.foo = 5;
}

var scheduleTimeout = function(obj, delay) {
    setTimeout(function(){ timeoutCallback.call(obj); }, delay);
}

var myobj = { foo: 1, bar: 2 }
scheduleTimeout(myobj, 1000); // myobj.foo becomes 5 after 1000ms delay
孤星 2024-10-23 12:15:36

如果您想做的是时间 jQuery 效果,那么延迟是正确的选择。

查看关于效果的 jQuery 文档,并密切关注效果队列是如何工作的,它是一个非常好的框架。 :)

You are right about delay being the way to go, if what you wish to do is time jQuery effects.

Look at the jQuery documentation on effects, and pay close attention to how the effects queue work, it's a very nice framework. :)

許願樹丅啲祈禱 2024-10-23 12:15:36

所以你需要不是立即开始你的效果,而是在一段时间之后?没错,这就是delay()函数。

$("#test").delay(3000).fadeOut('slow');
// after 3 seconds element starts to fade out

PS

但要小心延迟。例如这段代码:

$("#test").fadeOut(1000).sleep(1000).fadeIn(1000);

不会像某些人想象的那样工作。 Sleep 将与 fadeOut 同步运行,但不会在其终止后运行。所以如果你想让一个效果完整而不是做一些东西 - 你应该通过回调函数来制作。

So you need to start your effect not immediately, but after some time? So right, this is delay() function.

$("#test").delay(3000).fadeOut('slow');
// after 3 seconds element starts to fade out

P.S.

But be carefully with delay. For example this code:

$("#test").fadeOut(1000).sleep(1000).fadeIn(1000);

won't work like somebody may think. Sleep will run synchronous with fadeOut but not after it terminates. So If you want to make an effect complete and than make something - you should make by Callback function.

大姐,你呐 2024-10-23 12:15:36

这是我能想到的最简单的例子,也是 Joy Dutta 所说内容的浓缩版本。它首先显示“请稍候”,3 秒后显示“...完成!”。将其放入 Firebug 控制台,看看会发生什么:-)

$('body').html('Please wait!');
setTimeout(function (){$('body').html('...done!');}, 3000);

This is the simplest example I can think of and a condensed version of what Joy Dutta already said. It first shows "Please wait" and after 3 seconds "...done!". Throw it into the Firebug console and see what happens :-)

$('body').html('Please wait!');
setTimeout(function (){$('body').html('...done!');}, 3000);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文