如何将jquery lightbox添加到通过ajax添加到页面的内容?

问题描述:

我正在使用Instagram API将画廊加载到页面上。阿贾克斯看起来是这样的如何将jquery lightbox添加到通过ajax添加到页面的内容?

$.ajax ({ 
    type: 'GET', 
    dataType: 'jsonp', 
    cache: false, 
    url: 'https://api.instagram.com/v1/tags/food/media/recent?client_id='+instagramCID, 
    success: function(data) { 
     for (i in data.data) { 
      $('.instagram').append('<div class="instagram-placeholder"><a href="' + data.data[i].images.standard_resolution.url + '" title="Photo via '+ data.data[i].user.username +' on Instagram" rel="lightbox[gallery]"><img class="instagram-image" src="' + data.data[i].images.thumbnail.url +'"/></a></div>'); 
     }  
    } 
}); 

的AJAX加载内容到页面后,HTML呈现这样的事情:

<a href="http://distilleryimage1.instagram.com/5184cfc4754211e181bd12313817987b_7.jpg" 
title="Photo via washingtonwoman on Instagram" rel="lightbox[gallery]"><img 
class="instagram-image" 
src="http://distilleryimage1.instagram.com/5184cfc4754211e181bd12313817987b_5.jpg"></a> 

我知道我需要加载收藏夹添加动态内容后,到页面,但似乎无法弄清楚如何做到这一点。我从*尝试过的所有其他建议都创建了令我的浏览器崩溃的疯狂递归。

使用这个jQuery灯箱插件:http://leandrovieira.com/projects/jquery/lightbox/

请问像这样的工作?

$.ajax ({ 
    type: 'GET', 
    dataType: 'jsonp', 
    cache: false, 
    url: 'https://api.instagram.com/v1/tags/food/media/recent?client_id='+instagramCID, 
    success: function(data) { 
     for (i in data.data) { 
      $('.instagram').append('<div class="instagram-placeholder"><a href="' + data.data[i].images.standard_resolution.url + '" title="Photo via '+ data.data[i].user.username +' on Instagram" rel="lightbox[gallery]"><img class="instagram-image" src="' + data.data[i].images.thumbnail.url +'"/></a></div>'); 
     }  

     //Re-initialise lightboxes 
     $('.instagram').lightBox(); 
    } 
}); 

您需要将相同的配置传递到灯箱()函数为您最初用来设置灯箱加载页面时。

基本上,这里发生的是我们强迫lightbox在ajax内容加载后重新初始化。

上面的应该是给我看到的代码的最简单的解决方案。

如果你想玩AJAX事件多一点,你可能想尝试绑定ajax event,但这有点超出了这个问题的范围。

+0

工作正常!我稍微修改了它,将$('。instagram')更改为$('#gallery')。谢谢。我有点尴尬,它有多简单,但你的解释很有道理。 – laurenmichell 2012-03-24 09:23:42