2011-01-05 3 views
1

Я использую плагин автозаполнения jQuery, чтобы отобразить список пользователей вместе с их фотографиями из моей БД. Когда я показываю результаты без пользовательских изображений, автозаполнение выполняется очень быстро. Однако с изображениями изображения требуется некоторое время для загрузки и отображения. Я понимаю, что изображения загружаются, а затем отображаются. Однако в facebook изображения отображаются мгновенно. Я понимаю, что facebook использует серверы высокой конфигурации для возврата значений и использует некоторые другие методы для отображения изображений. Есть ли способ, в котором я могу хранить мои изображения тоже в БД или где-то еще, к которому можно получить доступ мгновенно? Я использую веб-службы для возврата значений в формате json.Загрузка изображений с автозаполнением jQuery

+0

вы хранения изображений или ссылок к изображениям в БД? – RAMe0

+0

На данный момент я сохраняю ссылки на изображения и затем показываю их, указывая на src img-тега. – Ashish

ответ

1

Вы можете попробовать загружать изображения после загрузки текстовых данных. Например, вы можете создавать результаты с пустым изображением (<img class="searchThumb" src="blank.gif"/>) с attr img_source, который будет содержать URL-адрес реального изображения (<img class="searchThumb" src="blank.gif" img_source="/real_img_url.jpg"/>). Также добавьте функцию к событию open, которое покажет изображения.

Простой пример (это просто пример, и я не проверял)

$(function() { 
    function showImages(){ 
     $(".searchThumb").each(function(){ 
      $(this).arrt("src", $(this).attr("img_source")); 
     }); 
    } 
    $("#birds").autocomplete({ 
     source: "search.php", 
     minLength: 2, 
     open: showImages() 
    }); 
}); 

UPD

$(function() { 
    function showImages(){ 
     $(".searchThumb").each(function(){ 
      $(this).arrt("src", $(this).attr("img_source")); 
     }); 
    } 
    function formatItemFn(row,pos,count,term){ 
     // Here is formatting like I described before 
     if (pos==count) showImages(); 
    } 
    $("#birds").autocomplete({ 
     source: "search.php", 
     minLength: 2, 
     formatItem: formatItemFn() 
    }); 
}); 
+0

open не является вариантом для автозаполнения. Я тоже пытался с formatResult. Но не повезло. – Ashish

+0

@Ashish Я только что проверил [jQuery UI Autocomplit page] (http://jqueryui.com/demos/autocomplete/) вкладку «События». Автозаполнение имеет событие 'open'. Описание из документов пользовательского интерфейса: 'Триггер, когда открывается меню предложений '. Там вы можете найти пример, используя событие' open'. И да, вы прямо «открываете» не вариант, это событие. – RAMe0

+0

Я использую плагин автозаполнения jQuery, а не автозаполнение jQuery UI. (http://docs.jquery.com/Plugins/Autocomplete/autocomplete) – Ashish