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上创建一个提琴,然后详细说明你将要发生什么吗?他想要的是遍历所有的结果在幻灯片阵列中的图像,将它们一次一个插入到滑块中,然后在转到下一个图像之前慢慢淡出。