2013-01-20 31 views
0

我有一種情況與jQuery。特別是它的prettyPhoto庫和getJSON函數。Json請求數據和jQuery的prettyphoto綁定問題

我有一個加載HTML的頁面,它調用jQuery和prettyPhoto。有一些內聯JS,這使得JSON請求進一步下跌的一頁:

它應該像下面的:

1)頁的負荷,

2)投票代碼運行,

3)腳本運行一個jQuery JSON請求,返回並在裏面有HTML(每個a-tag內部的a-tags和圖像),

4)然後腳本將JSON內部的HTML打印到屏幕上,

5)用戶點擊a-tag /圖片,它會在prettyPhoto的iframe彈出窗口中打開。

注 - >每個標籤都附有一個prettyPhoto標識(用於在使用iframe彈出框的prettyPhoto中加載圖像)。

問題是圖像(a-links)不能用prettyPhoto打開,我不知道爲什麼。沒有JS錯誤。

但是,如果我手動使用HTML(a-links/image),那麼它確實有效(所以從JSON請求中加載它們的HTML似乎有所不同)。

似乎時間JSON請求返回(與HTML)prettyphoto已經綁定到標籤(或缺乏)。

迄今爲止檢測:

試圖把JSON請求 '的document.ready' 和prettyPhoto在 'window.load'。所以早做JSON請求和prettyPhoto結合時一切負載 - 失敗

使用jQuery AJAX的JSON而不是嘗試 - 失敗

不需要特別的代碼,但與邏輯有問題。

+0

當詢問問題以包含代碼以便幫助您進行調試時會很有幫助。這聽起來像需要幫助使代碼異步運行,以便prettyPhoto的東西只在JSON請求完成時才被調用。 – tkone

+0

我打算去,但我不確定在理解頁面事件和jQuery事件方面是否存在差距。我將在下次有問題時嘗試去做。謝謝 –

回答

1

聽起來像來自JSON(a-links/images)的HTML不夠快(在'window.load'運行之前)。

嘗試將prettyPhoto JS放入成功回調(即返回數據的位置)。

下面load_images.json是JSON請求你做它返回的HTML(一個鏈接和其圖像):

$.getJSON("load_html.json", function() { 
    //grab HTML data (images/a-links) from json file and print into page 
}) 
.success(function() { 
    //JS code running prettyPhoto inside here. Now will bind to a-links. 
}); 

PrettyPhoto現在結合A-鏈接後的JSON加載它們。

希望能幫助在a-links之後擁有漂亮的照片。

如果失敗,請嘗試將prettyPhoto代碼放入成功回調後發生的完整回調中。就像下面:

$.getJSON("load_html.json", function() { 
    //grab HTML data (images/a-links) from json file and print into page 
}) 
.success(function() { 
    //nothing 
}) 
.complete(function() { 
    //JS code running prettyPhoto inside here. Now will bind to a-links. 
}); 

這樣,你是給prettyPhoto足夠的時間來綁定到其被標記爲它的正確的一個鏈接。

試試看。

+0

我試過了,它工作。你的救星,好主意。謝謝 –