Javascript jQuery—单击由AJAX动态生成的链接

Javascript jQuery—单击由AJAX动态生成的链接,javascript,jquery,ajax,Javascript,Jquery,Ajax,我读了很多关于这件事的帖子,但我无法解决我的问题。 我试图在动态生成的内容上创建一个简单的lightbox $(document).ready(function() { $("body").on("click", "button", function() { $("button").removeClass("selected"); $(this).addClass("selected"); var flickrAPI = "http://api.flickr.

我读了很多关于这件事的帖子,但我无法解决我的问题。 我试图在动态生成的内容上创建一个简单的lightbox

   $(document).ready(function() {
  $("body").on("click", "button", function() {
    $("button").removeClass("selected");
    $(this).addClass("selected");

    var flickrAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";
    var animal = $(this).text();
    var flickrOptions = {
      tags : animal,
      format: "json"
    };
    var displayPhotos = function(data) {
      var photoHTML = "<ul>";
      $.each(data.items, function(i, photo) {
        photoHTML += '<li class="grid-25 tablet-grid-50">';
        photoHTML += '<a href="' + photo.link + '" class="image">';
        photoHTML += '<img src="' + photo.media.m + '" ></a></li>';
      });
      photoHTML += '</ul>';
      $('#photos').html(photoHTML);
    }
    $.getJSON(flickrAPI, flickrOptions, displayPhotos);

      var $overlay = $('<div id="overlay"></div>');
      var $image = $("<img>");
      var $caption = $("<p></p>");

      //An image to overlay
      $overlay.append($image);

      //A caption to overlay
      $overlay.append($caption);

      //Add overlay
      $("body").append($overlay);

      //Capture the click event on a link to an image
      $("#photos a").click(function(event){
        event.preventDefault();
        var imageLocation = $(this).attr("href");
        //Update overlay with the image linked in the link
        $image.attr("src", imageLocation);

        //Show the overlay.
        $overlay.show();

        //Get child's alt attribute and set caption
        var captionText = $(this).children("img").attr("alt");
        $caption.text(captionText);
      });

      //When overlay is clicked
      $overlay.click(function(){
        //Hide the overlay
        $overlay.hide();
      });
  });
});
$(文档).ready(函数(){
$(“正文”)。在(“单击”,“按钮”,函数()上){
$(“按钮”).removeClass(“选定”);
$(此).addClass(“选定”);
var flickrAPI=”http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";
var animal=$(this.text();
变量flickrOptions={
标签:动物,
格式:“json”
};
var displayPhotos=函数(数据){
var photoHTML=“
    ”; $。每个(数据项、功能(i、照片){ photoHTML+='
  • ; photoHTML+='
  • '; }); photoHTML+='
'; $('#photos').html(photoHTML); } $.getJSON(flickrAPI、flickrOptions、displayPhotos); 变量$overlay=$(''); 变量$image=$(“

AJAX调用后的click事件没有启动。
如何解决此问题?

发生的情况是,在DOM存在之前添加事件,在等待响应实际呈现所有事件和接口或替换此事件之前,应执行哪些操作:

  $("#photos a").click(function(event){
  });
为了

这样,事件将永远存在…我猜…我不确定
$(“#photos a”)
是否真的获得了要附加事件的元素,但您知道了如何将事件添加到DOM上仍然不存在的DOM元素中


发生的情况是在DOM存在之前添加事件,在等待响应实际呈现所有事件和接口或替换此事件之前应执行的操作:

  $("#photos a").click(function(event){
  });
为了

这样,事件将永远存在…我猜…我不确定
$(“#photos a”)
是否真的获得了要附加事件的元素,但您知道了如何将事件添加到DOM上仍然不存在的DOM元素中


这是你的点击事件,我看不到…请看一看JSFIDLE上的完整代码:这是你的点击事件,我看不到…请看一看JSFIDLE上的完整代码:它似乎不起作用…只要我点击一张照片,它就会重定向到照片页面,而不是显示lightboxshare与我共享你的JSFIDLE在它工作之前,你的代码中应该还有其他问题,但是这个回答你的问题你可以在上面的回答中看到图片,我添加了
调试器
语句,你可以通过google chrome inspector控制台看到它。非常感谢。我现在只是想弄清楚我的其余代码有什么问题。似乎没有工作…只要我点击一张照片,它就会重定向到照片页面,而不是与我一起显示lightboxshare你的jsfiddle请在这里工作你的代码中应该有其他问题,但是这个回答你的问题你可以在上面的回答中看到图片我添加了
调试器
语句你可以用google chrome inspecto看到它r控制台很好用。非常感谢。我只是想弄清楚我其余的代码有什么问题。