Это потому, что fadeIn()
и fadeOut()
используют opacity
, поэтому ваше изображение просто становится "невидимым".
Если вам нужны постепенное исчезновение и постепенное исчезновение, вы можете использовать функцию обратного вызова для восстановления непрозрачности.1006 *
$('*').fadeOut('slow', function() {
$(this).css({
'opacity' : 1,
'display' : 'block'
});
});
Или просто поставьте fadeIn()
на fadeOut()
, я думаю, что второе лучше:
$('*').fadeOut('slow', function() { $(this).fadeIn(); });
Вы должны изменить свой код следующим образом:
/**
* binding 'click' event I would advice you to use not .click(function(e) {}) but .live('click', function(e) {});
* difference is that, if you load via AJAX, or construct another element by javascript, and append it to the DOM
* your trigger wouldn't work, because it's runs binding only on page load, and if the page changes
* it wouldn't bind trigger to the new elements, how does this .live('click', function(e) {});
*/
$('#thumbs img').click(function(){
var img = $(this); // storing image, that was clicked
$('#mainimg img').fadeOut('slow', function() { // fading out mainframe image
// linking the callback function on when the main image if faded out
$(this).attr('src', img.attr('src').replace('thumb','large')); // when image is already invisible, changing the source of the image
$(this).fadeIn('slow'); // fade in mainframe image again
});
});
Если я вас правильно понял, это приводит к исчезновению основного изображения, изменению источника и, в то же время, постепенному исчезновению при загрузке большого изображения в качестве источника.