我分叉你的小提琴并清理了一下代码:http://jsfiddle.net/4FzqA/。
在我的清洁版本与原创版本之间进行查看之后,唯一的区别是当您的设置为“onLoad”时,小提琴在我的“onDomReady”上设置。
否则,代码应该已经正常工作。
window.onload = function() {
var button = $("#fade_out").click(changeBackground);
}
function changeBackground() {
$('#background').fadeOut('slow', function() {
$('#background_hidden').fadeIn('slow');
});
}
编辑:它看起来像在window.onload与原小提琴在onLoad冲突的,因为原来的小提琴并没有为我工作。当我改变window.load记录准备好了,一切都很好,所以:
$(document).ready(function() {
var button = $("#fade_out").click(changeBackground);
});
另一个编辑:如果图像是大的,你可以尝试等待它加载,但请记住,负载如果从缓存中取出则不会触发:
$(document).ready(function(){
var img = new Image();
$(img)
.hide()
.load(function(){
$("body").append(this);
$(this).fadeIn(3000);
})
.attr("src", "files/originals/01.jpg");
});
来自:Fading in large images in Chrome。
另一编辑:从它的声音,你可能是正确的,猜测它是一个图像大小的问题。我用新的图像和负载更新了我原来的小提琴(http://jsfiddle.net/4FzqA/7/)。请注意,图像每次加载时效率都不高。但它会给你一个想法。以下是JS:
$(document).ready(function() {
var button = $("#fade_out").click(changeBackground);
});
function changeBackground() {
$('#background').fadeOut('slow', function() {
$('#background_hidden')
.attr('src', 'http://img688.imageshack.us/img688/8633/daynightm.jpg?' + (new Date()).getTime())
.load(function() {
$(this).fadeIn('slow');
});
});
}
将它搞乱了,如果你只是设置h_background到0的不透明度?我听说jQuery在具有display:none的元素中渐渐衰落。 –
你的代码没有问题。你什么时候调用changeBackground函数? – Anoop
没有理由不应该基于显示的代码工作,除非使用表或其他代码生效。在jsfiddle.net中创建一个复制问题的演示 – charlietfl