Вопрос

Мне нужна помощь в jQuery.Я пытаюсь создать что-то вроде небольшой картинной галереи.В этой галерее у меня есть пара маленьких фотографий и одна большая.Щелкнув маленькое изображение, я хочу, чтобы jQuery загрузил и заменил большое изображение.

Вот небольшая попытка, которая не работает!Но, возможно, кто-нибудь скажет мне, почему.

$(function(){
   $("a.smallpics").click(function(e){
      $(".bigpic")
      .load(function () {
          $(this).hide();
          $('#loader')
            .append(this);
            .removeClass('loading')
          $(this).fadeIn();
      });
      .attr('src', this.href);
      e.preventDefault();
   });
});

и HTML

<a href="pic1_big.jpg" class="smallpics" /><img src="pic1_small.jpg" style="width: 20px; height: 20px" /></a>
<a href="pic2_big.jpg" class="smallpics" /><img src="pic2_small.jpg" style="width: 20px; height: 20px" /></a>
<a href="pic3_big.jpg" class="smallpics" /><img src="pic3_small.jpg" style="width: 20px; height: 20px" /></a>
<div id="loader" class="loading" /><img src="pic3_big.jpg" class="bigpic" /></div>

Таким образом, в лучшем случае скрипт покроет большую картинку серым полупрозрачным слоем, запустит счетчик и после загрузки затухает изображение.(Спиннер находится на фоне «загрузки» класса)

Спасибо за вашу помощь.

Это было полезно?

Решение

Возможно, вы получаете много ошибок js, поскольку вы неправильно связываете вещи, но логика вашего решения также немного ошибочна.

Но если я правильно понял ваш вопрос, вам нужно скрыть бигпик до тот load событие, и на load событие, покажите его еще раз:

$(function(){
    $('a.smallpics').click(function() {        
        var $bigpic = $('.bigpic');
        var $loader = $('#loader').show();        
        $bigpic.hide().load(function () {
            $loader.fadeOut();
            $(this).fadeIn();
        }).attr('src', $(this).attr('href'));
        return false;
    });
});

Другие советы

Вы как бы изобретаете велосипед...в 4 000 000-й раз, но это хорошее упражнение для изучения jQuery.

Для отладки JavaScript на веб-странице нет ничего лучше плагина Firefox + Firebug.

Вы можете проверить этот плагин загрузчика jQuery... или этот.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top