jQuery 3.5.1 .animate() 中的回调函数不工作

jQuery 3.5.1 callback function in .animate() not working

我在 .animate() 中创建回调函数时遇到问题。 动画进行得非常顺利,没有问题,但是 complete: ()=> 部分根本不起作用。我已经从文档中复制了这个结构,但它只是不想在我的更改后合作。有谁知道为什么它不起作用?是setInterval引起的吗?如果是这样,我该如何循环播放此动画?

代码如下:

setInterval(() => {
    $(".slide")[0].animate({
        "marginLeft": "-100%"
    }, {
        duration: 2000,
        easing: "linear",
        complete: () => {
            console.log("test");
        },
    });
}, 6000);

您需要使用正确的选择器:

setInterval(() => {
    $(".slide").eq(0).animate({
        "marginLeft": "-100%"
    }, {
        duration: 2000,
        easing: "linear",
        complete: () => {
            console.log("test");
        },
    });
}, 6000);

当您从对象中获取元素 0 时,它 returns 是 DOM 元素而不是 jQuery 对象。查看更多:

https://api.jquery.com/eq/