Привет всем, я не уверен, как подойти к этой проблеме. У меня есть функция, которая передается массив элементов HTML img. Он просматривает эти изображения, проверяя атрибут SRC для изображений, используя пустой палец «без изображения». Затем он выполняет поиск изображения, используя в качестве запроса атрибут ALT тегов img. Затем функция обратного вызова в поиске заменяет Img SRC первым результатом изображения.
У меня проблемы с сопоставлением правильного изображения с соответствующим поисковым обратным вызовом. Прямо сейчас я просто создаю массивы и сопоставляю возвращенный поиск с индексом для изображений. Поскольку множественный поиск выполняется одновременно, в зависимости от размера изображения или задержки в сети, они могут выполнить обратный вызов не по порядку и смешать изображения.
Мне нужен подход, который позволил бы мне связать индивидуальный поиск с элементами HTML. Возможно ли это с помощью searchController и нескольких объектов imageSearch?
Ниже приведен пример функции, которую я использую
google.load('search', '1');
function googleFillBlanks(jqueryImages){
//namePairs holds the images matching alt text and attachedCount is used for matching up once the call back is fired
var attachedCount = 0;
var namePairs = [];
function searchComplete(searcher){
if (searcher.results && searcher.results.length > 0) {
var results = searcher.results;
var result = results[0];
$("img[alt='"+namePairs[attachedCount]+"'] ").attr('src', result.tbUrl);
//jqueryImages.get(0).attr('src', result.tbUrl);
attachedCount++;
}
}
var imageSearch = new google.search.ImageSearch();
//restrict image size
imageSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,
google.search.ImageSearch.IMAGESIZE_SMALL);
imageSearch.setSearchCompleteCallback(this, searchComplete, [imageSearch]);
jqueryImages.each(function(){
if($(this).attr('src').substr(-12,8) == 'no_image')
{
namePairs.push($(this).attr('alt'));
imageSearch.execute($(this).attr('alt'));
}
});
}