JQuery每个函数在非函数之间暂停

JQuery每个函数在非函数之间暂停,jquery,timeout,each,Jquery,Timeout,Each,这个JQuery函数应该超时,以确保每个项在最后一次查询后延迟8秒。这样就产生了一个相隔8秒图像淡入淡出的画廊 它不起作用 任何想法 function gallery() { var timeout = 0; $('.cornerimg').each(function() { setTimeout(function() { $(this).addClass('cornerimgfocus'); setTimeout(

这个JQuery函数应该超时,以确保每个项在最后一次查询后延迟8秒。这样就产生了一个相隔8秒图像淡入淡出的画廊

它不起作用

任何想法

function gallery() {
    var timeout = 0;
    $('.cornerimg').each(function() {
        setTimeout(function() {
            $(this).addClass('cornerimgfocus');
            setTimeout(function() {
                $(this).removeClass('cornerimgfocus');
                timeout += 8000;
            }, (timeout + 8000));
        },timeout); 
    });
}

奇妙的

您可能希望使用递归和某种索引

创建一个函数,从上一个图像中移除焦点(或者,如果可以的话,也可以只移除所有图像),然后将cornerimgClass放在与提供给该函数的索引匹配的图像上。然后,一旦完成此操作,它将使用setTimeout在8秒内再次调用自己,索引将增加1

当您到达列表的末尾时,您需要进行检查,然后停止、重置为0或您喜欢的任何内容

但关键是对命名函数使用递归,而不仅仅是匿名函数。

setTimeout(func,0)
只有在当前脚本完成后才会立即执行该函数,因此
timeout
只有在对所有角点调用
setTimeout
后才会递增(延迟相同)。请按如下方式尝试:

function gallery() {
    var timeout = 0;
    $('.cornerimg').each(function() {
        setTimeout(function() {
            $(this).addClass('cornerimgfocus');
            setTimeout(function() {
                $(this).removeClass('cornerimgfocus');
            }, 8000);
        },timeout);
    timeout += 8000;
    });
}

在setTimeout调用中,“this”不等于您认为它是的元素,它等于DOMWindow。请尝试此版本,因为我发现它更简单

function gallery() {
    var imgs = $('.cornerimg.');
    var timer = 8000; // default starting time


    var fade = function(element) {
        setTimeout(function() {
            element.addClass('cornerimgfocus');
        }, timer);

        timer += 8000;

        setTimeout(function() {
            element.removeClass('cornerimgfocus');
        }, timer);
    };

    for (var i = 0; i < imgs.length; i += 1) {
        fade(imgs.eq(i));
    }
}
函数库(){
var imgs=$('.cornerimg');
var timer=8000;//默认启动时间
var fade=功能(元素){
setTimeout(函数(){
元素addClass('cornerimgfocus');
},定时器);
定时器+=8000;
setTimeout(函数(){
element.removeClass('cornerimgfocus');
},定时器);
};
对于(变量i=0;i
除了我的答案之外,我觉得我应该注意“它不起作用”如果不继续描述它以什么方式不起作用,就不应该使用它。什么都不会发生?错误消息?挂起?一次显示所有图像?等等。这很好。周末我找到了另一种方法,但你的答案确实回答了问题,所以你得到了一个勾号。太棒了
function gallery() {
    var imgs = $('.cornerimg.');
    var timer = 8000; // default starting time


    var fade = function(element) {
        setTimeout(function() {
            element.addClass('cornerimgfocus');
        }, timer);

        timer += 8000;

        setTimeout(function() {
            element.removeClass('cornerimgfocus');
        }, timer);
    };

    for (var i = 0; i < imgs.length; i += 1) {
        fade(imgs.eq(i));
    }
}