2011-02-27 38 views
0

我使用api从flickr动态加载图像。但是,当我尝试使用colorbox,prettyphoto或其他jquery模式窗口 - 它们不起作用。到较大图像的链接仅在新窗口中打开图像。jquery模式插件不能用于动态加载的图像

我的测试页: http://www.thinquetanque.com/test/full/test.html#/advanced-usage

我假设图象已被拉扯之前它是由于模态插件的加载。

想法如何抵消?

谢谢!

更新:

尝试使用:

$('.colorbox').live('click', function() { $.fn.colorbox({href:$(this).attr('href'), open:true}); return false; } 

这并不工作 - 但我想我的Flickr API中使用 - 使用.live如下建议。我正在使用的flickr api使用.live为div的子元素添加属性。

$('#wrapper').live('mouseover', function(){ 
        $(this).children('p').attr('class', 'image-info'); 
       }); 

但我无法弄清楚如何改变上面的使用colorbox。我改变了鼠标悬停点击,但我不知道如何使用$(this).children添加colorbox功能

回答

1

我遇到了同样的问题,终于弄明白了!在获取src之前添加一个负载处理程序应该通过调用colorbox函数来完成。与您的代码,它会是这样的:

... 
$.getJSON('YOUR_JSON_URL_INFO', 
function(data){ 

    $('#wrapper a').colorbox(); 

     //if the image has tags 
     if(data.photo.tags.tag != '') { ... 
0

你是对的。图片在插件绑定后加载。在jQuery中,您有live()事件,它与bind()事件类似,只是它也适用于动态加载的dom元素。

+0

我想下面的 - 但没有运气--- $活( '点击 '函数(){$ .fn(' 颜色框。')。 .colorbox({href:$(this).attr('href'),open:true}); return false; } – Jason 2011-02-28 00:25:58

0

为每个图像添加一个负载处理程序。在处理程序中加载colorbox到每个图像。为了使这个工作,你需要添加处理程序,并在设置src之前将其添加到DOM,否则在处理程序之前遇到加载图像的问题,从而导致事件不发生。您还可以将锚点标记为添加了colorbox,并使用具有适当长的超时时间的计时器来“赶上”在应用处理程序之前加载的任何图像,如果无法保证处理程序在图像之前处于活动状态开始加载。