2010-05-11 3 views
2

У меня есть список галерей, когда вы нажимаете на название галереи, оно тянет содержимое (HTML с изображениями).jQuery ajax not preloading images

Когда содержимое втягивается в него, предварительно загружает html, а не изображения, какие-либо идеи?

Это является JavaScript, я использую:

$('#ajax-load').ajaxStart(function() { 
    $(this).show(); 
}).ajaxStop(function() { $(this).hide();}); 


// PORTFOLIO SECTION 
    // Hide project details on load 
    $('.project > .details').hide(); 
    // Slide details up/down on click 
    $('.ajax > .header').click(function() { 
     if ($(this).siblings(".details").is(":hidden")) { 
     var detailUrl = $(this).find("a").attr("href"); 
     var $details = $(this).siblings(".details"); 

     $.ajax({ 
      url: detailUrl, 
      data: "", 
      type: "GET", 
      success: function(data) { 
        $details.empty(); 
        $details.html(data); 
        $details.find("ul.project-nav").tabs($details.find(".pane"), {effect: 'fade'}); 
        $details.slideDown("slow"); 
      }}); 
     } 
     else {$(this).siblings(".details").slideUp();} 
     return false; 
    }); 

Вы можете увидеть это продемонстрировано на http://www.georgewiscombe.com

Спасибо заранее!

ответ

3

$.ajax не предназначен для предварительной загрузки изображений. Он просто извлекает данные из указанного URL-адреса. В вашем случае вы добавляете данные как html ($details.html(data)). Затем браузер видит, что есть изображения в этом html и загружает их.

В качестве временного решения можно предложить одно из следующих действий:

  1. Использование CSS фона вместо (желательно с CSS спрайтов)
  2. Preload все упомянутые изображения (here это рабочий раствор)
+0

Привет, Спасибо за ответ, Я действительно не хочу использовать фоновые изображения CSS, он не очень доступен и может стать кошмаром для поддержания. Второй вариант выглядит хорошо, не уверен, как я буду интегрировать его с моим кодом - помогите оценить :) –

+0

Включите реализацию процедуры preloadImages из этой записи в блоге. В $ (document) .ready() вызовите процедуру preloadImages и укажите URL-адреса изображений, которые вы хотите предварительно загрузить. –