2011-02-27 41 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,並使用具有適當長的超時時間的計時器來「趕上」在應用處理程序之前加載的任何圖像,如果無法保證處理程序在圖像之前處於活動狀態開始加載。