Javascript 循环不工作时的jQuery

Javascript 循环不工作时的jQuery,javascript,jquery,Javascript,Jquery,我只是想弄清楚如何循环使用同一个类的元素,并一次为它们设置一个动画。我想这个while循环可以工作,但我不明白为什么不行 $(document).ready(function() { var index = 0; var images = $('.image'); while (index < images.length) { var image = images[index]; image.animate({

我只是想弄清楚如何循环使用同一个类的元素,并一次为它们设置一个动画。我想这个while循环可以工作,但我不明白为什么不行

$(document).ready(function() {
    var index = 0;
    var images = $('.image');

    while (index < images.length) {
        var image = images[index];
        image.animate({
            opacity: "1"
        }, 1000, function() {
            index++;
        });
    };
});
在动画之后执行的回调中调用

索引+。只有在该脚本停止执行后,动画才会开始

因此,index++永远不会执行,循环也永远不会结束

您需要将其重写为递归函数。现在调用index++的事件处理程序实际上需要负责设置下一个动画

index++在动画之后执行的回调中调用。只有在该脚本停止执行后,动画才会开始

因此,index++永远不会执行,循环也永远不会结束


您需要将其重写为递归函数。现在调用index++的事件处理程序实际上需要负责设置下一个动画

还有一个jQuery。每个函数的用法如下:

$('.class').each(function() {
 $(this).animate(); 
});

其中,这是该类的下一项,还有一个jQuery。每个函数的用法如下:

$('.class').each(function() {
 $(this).animate(); 
});

这是该类的下一项,为什么不使用jQuery each函数呢

var images = $('.image');

$.each(images,function(){
    $(this).animate({
        opacity:"1"
    }, 1000, function(){
        index++;
    });
 });

为什么不在每个函数中使用jQuery

var images = $('.image');

$.each(images,function(){
    $(this).animate({
        opacity:"1"
    }, 1000, function(){
        index++;
    });
 });

这是@Evert的一个简单实现

在这里引用他们的答案

在动画之后执行的回调中调用index++。 只有在该脚本停止后,动画才会开始 执行

因此,index++永远不会执行,循环也永远不会结束

您需要将其重写为递归函数。事件处理程序 现在调用index++实际上需要负责设置 下一个动画

实现可以是这样的

var index = 0;
var images = $('.image');
animate(images);

function animate() {
    var image = images.eq(index);
    image.animate({
        opacity: "1"
    }, 1000, function () {
        index++;
        animate();
    });
}

演示

这是@Evert的一个简单实现

在这里引用他们的答案

在动画之后执行的回调中调用index++。 只有在该脚本停止后,动画才会开始 执行

因此,index++永远不会执行,循环也永远不会结束

您需要将其重写为递归函数。事件处理程序 现在调用index++实际上需要负责设置 下一个动画

实现可以是这样的

var index = 0;
var images = $('.image');
animate(images);

function animate() {
    var image = images.eq(index);
    image.animate({
        opacity: "1"
    }, 1000, function () {
        index++;
        animate();
    });
}

演示

您的逻辑在索引++中出错;您应该有一个递归函数。您需要在递归函数中增加index的值

function YourRecusiveFunction() {
    var image = images.eq(index);
    image.animate({
        opacity: '1'
    }, 1000, function () {
        index++;
        YourRecusiveFunction();
    });
}

文档准备好后调用RecursiveFunction。

索引++中的逻辑出错;您应该有一个递归函数。您需要在递归函数中增加index的值

function YourRecusiveFunction() {
    var image = images.eq(index);
    image.animate({
        opacity: '1'
    }, 1000, function () {
        index++;
        YourRecusiveFunction();
    });
}


文档准备好后,请调用RecursiveFunction。

在if语句中尝试images.width,因为它的价值,您不需要;在while块结束时,在if语句中尝试images.width,因为它的价值,您不需要;在while块结束时。这并没有解决OP希望一次为一个图像设置动画的问题。这并没有解决OP希望一次为一个图像设置动画的问题。这并没有解决OP希望一次为一个图像设置动画的问题。@Evert我看到了。while循环将不会为下一个元素设置动画,直到上一个元素已设置动画?感谢您指出这一点。这并不能解决OP希望一次一个动画化图像的问题。@Evert我看到了。while循环将不会为下一个元素设置动画,直到上一个元素已设置动画?谢谢你指出这个Owell done=应该把你的例子和我的解释结合起来:p谢谢你,这正是我想要实现的。@Evert:这正是我想要实现的。@doWell done=应该把你的例子和我的解释结合起来:p谢谢你,这正是我想要实现的。@Evert:这正是我想要实现的我正要感谢他帮我把事情弄清楚。你和迪拉杰帮我弄明白了。谢谢你帮我弄清楚了。你和迪拉杰帮我弄明白了。