jQuery: .load изображение, затем fadeIn () завершается ошибкой при двойном нажатии! - PullRequest
0 голосов
/ 26 июля 2010

Итак, у меня есть установка .load для изображения с обратным вызовом .fadeIn (), который работает просто отлично.Проблема в том, что, если я запускаю .load дважды подряд на одном и том же изображении, он не возвращается к обратному вызову!

Вот фрагмент кода:

$('#thumbs a').click( function() {
  imageSrc = $(this).attr('href').substring(1)+'.jpg';   // grab src, remove hash, add jpeg extension
  $('#viewer img').fadeOut('fast', function() {     // fade old image out fast, wait until finished before changing src
   $('#viewer img').attr('src', (mediumPath+imageSrc));  // change src to new image
   $('#viewer a').attr('href', imageSrc);
  });
  $('#viewer img').load(function(){        // once image is loaded, fade the img back in
         $('#viewer img').fadeIn('slow');
        });
  return false;
 });

ИВы можете попробовать это на моем сайте (в процессе) здесь .Просто дважды щелкните по пиктограмме слева два раза подряд, и loader.gif не исчезнет, ​​то есть не попадет в .fadeIn ().

Примечание : Iсчитаю, что это влияет только на браузеры WebKit (?)

1 Ответ

1 голос
/ 26 июля 2010

Я протестировал ваш сайт http://www.benjibee.com/ в Chrome (насколько мне известно, на основе Webkit Browser) и не смог воспроизвести проблему.Хотя это займет немного больше времени, чем в Firefox (но это может быть только мой компьютер).

Пара предложений / наблюдений.

С вашими .click() взаимодействиями, используя формат:

.click( function( e ) {
  e.preventDefault();
  // Rest of your Javascript Code here...
} );

Остановит выполнение привязки / ссылки как таковой и может быть вызвано в начале обработки jQuery вместо ожидания окончания использования return false.

Вы также можете сохранить в переменной javascript информацию о текущем изображении / ссылке, а затем проверить это при последующих щелчках по миниатюрам - в том виде, в каком оно есть, если отображается img1.jpg, и большой палец для этого изображенияпри щелчке текущее увеличенное изображение исчезает, а затем снова возвращается без изменений.Просто крошечная вещь.

...