Измените текст одновременно с изображением

#jquery #jsonp #image

#jquery #jsonp #изображение

Вопрос:

У меня есть это слайд-шоу с изображениями, поступающими из канала JSON. Изображения имеют атрибут alt, взятый из ленты, но я хотел бы отобразить значение alt на изображении. Это не работает, поскольку отображает только первый alt из первого изображения.

Как я должен это сделать?

Это строка, которую мне придется изменить:

 htmlString  = '<img src="'   item.url_m   '" alt="'   item.title   '"><span class="etc">"' item.title '"</span>';
  

И вот полный код:

 $(document).ready(function() {
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) { 
        var lat = position.coords.latitude;
        var lon = position.coords.longitude;

        var JSONURL = "http://api.flickr.com/services/rest/?method=flickr.photos.searchamp;api_key=d512a7bb4b7c0a6eb65d5095464ebf3famp;format=jsonamp;privacy_filter=1amp;media=photosamp;tag=londonamp;has_geo=1amp;accuracy=11amp;content_type=1amp;extras=geo,owner_name,url_mamp;page=1amp;per_page=20amp;radius_units=kmamp;radius=5amp;lat=" lat "amp;lon=" lon "amp;jsoncallback=?";
  jQuery.getJSON( JSONURL, getJSONimages); 
  function getJSONimages(data) {
    var htmlString = "";
    $.each(data.photos.photo, function(i,item){
        htmlString  = '<img src="'   item.url_m   '" alt="'   item.title   '"><span class="etc">"' item.title '"</span>';
    });      
    $('#slideshow').html(htmlString); 
    $('#slideshow').slideshow({
                timeout: 3000,
                type: 'random',
                fadetime: 2000
            });      
  }         
    });
}
else {    

}         
  })
  

Я пробовал подобное, но не работает?

var display_alt = $("#slideshow img").attr("alt"); а затем отобразите переменную display_alt в промежутке, но опять та же проблема.

Ответ №1:

$("#slideshow img") выбирает все изображения, которые являются потомками #slideshow элемента. Если вы хотите получить атрибут alt для определенного изображения, вам нужно сузить область поиска, используя что-то вроде:

 $("#slideshow img").eq(1).attr('alt');//this will select the second image in the set
  

Документация: http://api.jquery.com/eq

 $("#slideshow img").eq($("#slideshow img").index(current_slide_element)).attr('alt');//this will select the image in the set that matches the element stored in the `current_slide_element` variable
  

Документация: http://api.jquery.com/index

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

Комментарии:

1. мое слайд-шоу чрезвычайно простое и использует встроенный CSS с использованием z-индекса. Я понимаю вашу точку зрения, но я все еще не понимаю, как это реализовать, я проведу еще несколько исследований и попытаюсь найти способ выбрать фотографию и соответствующим образом применить заголовок.

Ответ №2:

Это должно сработать. Он проходит через каждое из них <img> и копирует его alt атрибут в <span class="etc"> :

 $("#slideshow img").each(function(){
  var alt = $(this).attr("alt");
  $(this).next("span.etc").html(alt);
});
  

Комментарии:

1. Спасибо! Я пытался поместить это в свой цикл, до, после, между ними, я не понимаю, что не так, и даже если я понимаю ваш код (я полный новичок, и я смог написать то, что я сделал до сих пор, с помощью форумов и интенсивных исследований), я не в состоянии точно понять, где это реализовать : /.

2. будет ли мне разрешено опубликовать скрипку?