JQuery не распознает динамические HTML-классы / идентификаторы

Я создаю галерею плейлистов YouTube, пытаюсь получить миниатюры, чтобы открыть лайтбокс, в котором затем отображается видеофрейм.

Лайтбокс не работает с моим динамическим HTML, кажется, что он не распознает классы.

Я довольно новичок в jQuery, поэтому любая помощь или советы будут оценены!

Код лайтбокса

$(document).ready(function(){  
  $("a#show-panel").click(function(){  
    $("#lightbox, #lightbox-panel").fadeIn(300);  
  })  
  $("a#close-panel").click(function(){  
    $("#lightbox, #lightbox-panel").fadeOut(300);  
 })  
})  

Вызов данных YouTube для создания динамического HTML

function getVideoHtml(video)
{

title =  video.title.$t;
url =  video.content.src;
views =  video.yt$statistics.viewCount;
dateCreated = video.published.$t;
videoId =  video.media$group.yt$videoid.$t;
//console.log(videoId);
videoThumb = video.media$group.media$thumbnail.url;
//console.log(videoThumb);
videoHtml = "<div> \
 <a id=\"show-panel\" href=\"#\"> \
 <img src=\"http://img.youtube.com/vi/"+videoId+"/mqdefault.jpg\"/> </a> \
   <div id=\"lightbox-panel\"><h2>"+title+"</h2> <iframe id=\"ytplayer"+videoId+"\" type=\"text/html\" width=\"300\" height=\"250\" \
  src=\"http://www.youtube.com/embed/"+videoId+"?autoplay=0&origin=http://example.com\" \
  frameborder=\"0\"/> \
  <p align=\"center\"><a id=\"close-panel\" href=\"#\">Close this window</a></p> \
 </div> \
    </div>\
    <div class=\"lightbox\"></div> \
<p>"+title+"</p> \
<p>views:"+views+"</p> \
<p>date created: "+dateCreated+"</p> \
</div>";
return videoHtml;
}

1 ответ

Попробуйте это так. Вам необходимо связать ссылки, используя on(), Теперь, если вы создаете динамические ссылки, где их может быть несколько на одной странице, я бы использовал селектор классов, потому что идентификаторы уникальны.

$(document).ready(function(){  
  $(document).on("click","a#show-panel",function(){  
    $("#lightbox, #lightbox-panel").fadeIn(300);  
  })  
  $(document).on("click","a#close-panel",function(){  
    $("#lightbox, #lightbox-panel").fadeOut(300);  
 })  
}) 
Другие вопросы по тегам