Javascript 如何使用淡出进行迭代?

Javascript 如何使用淡出进行迭代?,javascript,jquery,Javascript,Jquery,我想改进这段代码,使每个图像独立显示并淡出 jQuery.each( slidesArray, function (index, value) { var linkHref = value[1]; var imageSource = value[0];; $("#slider").html("<a href='" + linkHref + "'><img src='" + imageSource + "'>

我想改进这段代码,使每个图像独立显示并淡出

jQuery.each(
slidesArray, function (index, value) {

   var linkHref = value[1];
   var imageSource = value[0];;


   $("#slider").html("<a href='" + linkHref + "'><img src='" +
                     imageSource + "'></a>").fadeOut(5000);

});
这张图片面临一个问题,迭代速度很快,因此只出现最后一张图片并进行淡出

jQuery.each(
slidesArray, function (index, value) {

   var linkHref = value[1];
   var imageSource = value[0];;


   $("#slider").html("<a href='" + linkHref + "'><img src='" +
                     imageSource + "'></a>").fadeOut(5000);

});

你能帮我吗?请注意,图像应分别设置动画。

每次调用$slider.html时,都会替换slider的内容

您想要做的不是延迟实际循环,而是延迟图像的放置[和褪色]。您可以使用setTimeout这样做:

jQuery.each 幻灯片阵列、函数索引、值 {

        var linkHref = value[1];
        var imageSource = value[0];;

        setTimeout(function() {
             $("#slider").html
             (
                "<a href='" + linkHref + "'><img src='"+ imageSource + "'></a>"
             ).fadeOut(5000);
        }, 2000 * index);
    }
);

下面是一个小jQuery插件,它将有助于:

jQuery.slowEach = function( array, interval, callback ) {
    if( ! array.length ) return;
    var i = 0;
    next();
    function next() {
        if( callback.call( array[i], i, array[i] ) !== false )
            if( ++i < array.length )
                setTimeout( next, interval );
    }
};
jQuery.fn.slowEach = function( interval, callback ) {
    jQuery.slowEach( this, interval, callback );
};

我还没有测试过这个,但理论上应该是可行的

function fader(i){
    $("#slider").css('display', '');
    if (i == slidesArray.length){
        return;
    }
    var linkHref = slidesArray[i][1];
    var imageSource = slidesArray[i][0];
    i++;
    $("#slider").html("<a href='" + linkHref + "'><img src='" +
                      imageSource + "'></a>").fadeOut(5000, fader(i));
}
fader(0);
编辑:我已经测试过了,看起来很有效。下面是一个例子


请注意,无需使用setTimeout

,但您希望在每个图像上完成淡出,或者当鼠标不再在图像中时,您希望完全停止该动画并移动到鼠标所在的位置?不。它的行为应类似于滑块。不需要鼠标事件。只需对第一个图像进行淡出,然后移动到e下一步。从答案中可以明显看出,所有的答案都不知道你真正想要什么,但下层选民似乎知道,但没有分享。你能用当前的结果分享HTML,甚至在jsFiddle.net上创建一个提琴,然后详细说明你将要发生什么吗?他想要的是遍历所有的结果在幻灯片阵列中的图像,将它们一次一个插入到滑块中,然后在转到下一个图像之前慢慢淡出。