Причина, по которой ваше 2-е изображение не загружается предварительно, заключается в том, что оно настроено на отображение: нет.Когда браузер видит, что он решает, что не стоит сразу загружать изображение.Как было предложено другими, предварительно загружайте изображение исключительно через javascript.
var img = new Image();
img.src = "http://www.colorcombos.com/images/colors/hex-codes/003366.png";
Вам не нужно когда-либо ссылаться на переменную img, чтобы использовать предварительно загруженное изображение, каждый раз, когда вы используете то же изображение в браузерепросто вытащу его из кеша.
Но не меняя ваш метод, вот как я убрал проблему мерцания.Переключите порядок изображений, добавляемых на страницу, чтобы они правильно складывались.и затем удалите дисплей: ни один из селектора img.
$(document).ready(function(){
function preload(arrayOfImages) {
var temp = $('<img>')
temp.attr("src", "http://www.colorcombos.com/images/colors/hex-codes/003366.png")
temp.attr("class", "active")
$('#myGallery').prepend(temp)
var temp = $('<img>')
temp.attr("src", "http://www.colorcombos.com/images/colors/hex-codes/FF9900.png");
$('#myGallery').prepend(temp)
$(arrayOfImages).each(function(){
});
}
preload();
$('#switch').click(function(){
swapImages()
});
function swapImages(){
var $active = $('#myGallery .active');
var $next = ($('#myGallery .active').next().length > 0) ? $('#myGallery .active').next() : $('#myGallery img:first');
$active.fadeOut("fast")
$active.removeClass('active')
$next.fadeIn("fast").addClass('active');
}
});
css
#myGallery img{
position:absolute;
top:0;
left:0;
}