自定义 jQuery 幻灯片间隔问题

发布于 2024-12-01 12:15:06 字数 310 浏览 1 评论 0原文

我正在构建一个自定义 jQuery 幻灯片作为学习该语言的一种方式。到目前为止,它会自动前进,并具有上一个/下一个按钮。

  1. 单击“下一步”后,如何禁用“下一步”按钮,直到动画完成? (多次快速单击会使事情变得混乱)
  2. 单击“下一步”后,是否可以重置间隔,以便在下一次自动前进之前再间隔 3000 毫秒?

JsFiddle 示例

ps- 抱歉,如果代码很难看,希望可爱的小狗图片可以弥补这一点。 :)

I'm building a custom jQuery slideshow as a way of learning the language. So far, it auto-advances, and has previous/next buttons.

  1. After clicking next, how can I disable the next button until the animation is completed? (multiple fast clicks messes things up)
  2. After clicking next, can the interval be reset so it's another 3000 ms until the next auto advance?

JsFiddle Example

ps- Sorry if the code is ugly, hopefully the adorable puppy pictures makes up for it. :)

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

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

发布评论

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

评论(2

折戟 2024-12-08 12:15:06
$('#next').click(function(){
   var m = this;
     $(m).attr('disabled', 'true');
    $('.bslide img:last-child')
         .fadeOut(1000, function() {
    $('.bslide img:last-child')
           .prependTo($('.bslide'));
    $('.bslide img:last-child')
         .prev().show();
     $(m).attr('disabled', 'false');
    });
});

我希望这有帮助。

$('#next').click(function(){
   var m = this;
     $(m).attr('disabled', 'true');
    $('.bslide img:last-child')
         .fadeOut(1000, function() {
    $('.bslide img:last-child')
           .prependTo($('.bslide'));
    $('.bslide img:last-child')
         .prev().show();
     $(m).attr('disabled', 'false');
    });
});

I hope this helps.

牛↙奶布丁 2024-12-08 12:15:06

按钮

您不必禁用它们,最好在使用淡入淡出/显示之前重置动画 - 即,

$('.bslide img:last-child').fadeOut(1000, ...

而不是使用

$('.bslide img:last-child').stop().fadeOut(1000, ...

间隔

您可以存储间隔的句柄, 使用 var my_iv = setInterval(...) 并且每次用户单击“下一步”时,您只需使用 clearInterval(my_iv) 取消它并重新启动它,

您的间隔也不会需要重复的代码,一个简单的$('#next').click() 应该足够了...

buttons

you don't have to disable them, better you simply reset your animations before you use fade / show - i.e. instead of

$('.bslide img:last-child').fadeOut(1000, ...

use

$('.bslide img:last-child').stop().fadeOut(1000, ...

interval

you can store a handle to your interval using var my_iv = setInterval(...) and each time the user click 'next' you simple cancel it with clearInterval(my_iv) and restart it

also your interval does not need duplicated code, a simple $('#next').click() should be enough...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文