我正在尝试编辑一个如下所示更改div图像的脚本,以更改#header的background-image属性。

如您在我的小提琴中看到的,http://jsfiddle.net/HsKpq/460/我试图显示images into the $('#header').css('background-image',..................).fadeTo('slow',1);

我怎样才能做到这一点?我想我也必须更改其他部分。

var img = 0;
var imgs = [
    'http://www.istockphoto.com/file_thumbview_approve/9958532/2/istockphoto_9958532-sun-and-clouds.jpg',
    'http://www.istockphoto.com/file_thumbview_approve/4629609/2/istockphoto_4629609-green-field.jpg',
    'http://www.istockphoto.com/file_thumbview_approve/9712604/2/istockphoto_9712604-spring-sunset.jpg'
];
// preload images
$.each(imgs,function(i,e){var i=new Image();i.src=e;});

// populate the image with first entry
$('img').attr('src',imgs[0]);


var opacity = 0.1; // change this for minimum opacity
function changeBg() {
    $('img').fadeTo('slow',opacity,function(){
        $('#header').css('background-image',..................).fadeTo('slow',1);
    });
}



setInterval(changeBg,5000);

最佳答案

您需要一些修复:


使用简单的增量即可跟踪当前图像。
错字:“图片”->“图片”
$(“ img”)不会选择任何内容,因此永远不会触发JQuery fadeto“ complete”回调(我假设您打算淡入div本身)
您需要为"background-image" CSS property使用“ url('http:// ...')”




function changeBg() {
    if (i >= imgs.length) i=0;
    $('#header').fadeTo('slow',opacity,function(){
        var val = "url('" + imgs[i++] + "')";
        console.log(val);
        $('#header').css('background-image',val).fadeTo('slow',1);
    });
}


这是updated demo

10-06 12:41
查看更多