当页面失去焦点时,具有 setInterval() 方法的 jQuery 画廊无法正常工作

发布于 2024-11-17 22:21:54 字数 1421 浏览 4 评论 0原文

我创建了 jQuery 代码,用于每 5 秒列出一次图像 - 当焦点位于图片上的按钮上时,它必须停止更改。当我的页面失去焦点时,我遇到了问题 - 当我返回时,它在一段时间内无法正常工作,因为图片的坐标不正确!

这是我的 SavasSript 代码:

var displayTimeout = 5000;
var bannerCurrentImgIndex = 0;
var timer;
var link;

function bannerDoWork() {

    var bannerImages = $("#myGallery .main_pic");
    var bannerImagesCount = bannerImages.length;

    if (bannerCurrentImgIndex == bannerImagesCount - 1) {
        bannerImages.eq(bannerCurrentImgIndex).animate({ 'left': '-725px' }, 'slow');
        bannerImages.eq(0).animate({ 'left': '0' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex - 1).css({ 'position': 'absolute', 'left': '725px' });
        bannerCurrentImgIndex = 0;
    }

    else {
        bannerImages.eq(bannerCurrentImgIndex).animate({ 'left': '-725px' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex + 1).animate({ 'left': '0' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex - 1).css({ 'position': 'absolute', 'left': '725px' });
        bannerCurrentImgIndex = bannerCurrentImgIndex + 1;
    }
}

$(document).ready(function () {
    timer = setInterval(function () { bannerDoWork(); }, displayTimeout);
    link = $("#myGallery .main_pic_btn");
    link.hover(function () { timer = clearInterval(timer); },
    function () {
        if (timer == null)
            timer = setInterval(function () { bannerDoWork(); }, displayTimeout);
    });

});

I create jQuery code for listing images every 5 sec - when the focus is on the button which is located on the picture, it must stop changing. I have a problem when my page is lost focus - when I back it dose not work correctly for some time because the coordinates of pictures are not correct!

Here is my SavasSript code:

var displayTimeout = 5000;
var bannerCurrentImgIndex = 0;
var timer;
var link;

function bannerDoWork() {

    var bannerImages = $("#myGallery .main_pic");
    var bannerImagesCount = bannerImages.length;

    if (bannerCurrentImgIndex == bannerImagesCount - 1) {
        bannerImages.eq(bannerCurrentImgIndex).animate({ 'left': '-725px' }, 'slow');
        bannerImages.eq(0).animate({ 'left': '0' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex - 1).css({ 'position': 'absolute', 'left': '725px' });
        bannerCurrentImgIndex = 0;
    }

    else {
        bannerImages.eq(bannerCurrentImgIndex).animate({ 'left': '-725px' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex + 1).animate({ 'left': '0' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex - 1).css({ 'position': 'absolute', 'left': '725px' });
        bannerCurrentImgIndex = bannerCurrentImgIndex + 1;
    }
}

$(document).ready(function () {
    timer = setInterval(function () { bannerDoWork(); }, displayTimeout);
    link = $("#myGallery .main_pic_btn");
    link.hover(function () { timer = clearInterval(timer); },
    function () {
        if (timer == null)
            timer = setInterval(function () { bannerDoWork(); }, displayTimeout);
    });

});

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

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

发布评论

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

评论(1

感悟人生的甜 2024-11-24 22:21:54

我找到答案了!我设置了动画参数queue=false - 现在效果很好!
例子:

firstPic.animate({ left: 0, top: 0 }, { queue: false, duration: "slow" });

I find answer! I set animate parameter queue=false - and now it works great!
Example:

firstPic.animate({ left: 0, top: 0 }, { queue: false, duration: "slow" });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文