2012-04-18 43 views
2

我有一個JS照片庫,當用戶單擊縮略圖時,可以將單個圖像從API加載到頁面中。我希望人們能夠在每張圖片上添加Facebook評論。所以我在包含圖庫的頁面中獲得了我的Facebook評論元素。FB.XFBML.parse()不刷新Facebook的評論

<div class="fb-comments" data-href="" data-num-posts="10" data-width="480"></div> 

在加載頁面和第一填充我的評論元素的數據href屬性設置爲URL的第一圖像(例如http://site.com/gallery/1027/1)畫廊。然後,如果用戶點擊縮略圖,我將該屬性重置爲所選圖像的URL。

fbComments.attr('data-href', data.link + index); 
FB.XFBML.parse(); 

FB.XFBML.parse();是我讀過的,你應該做的,讓Facebook刷新評論。我爲一張圖片添加了評論,並嘗試點擊圖片的縮略圖而無需評論。但我對第一張圖片的評論仍然存在。誰能建議爲什麼

我試過在我的JS文件中註銷FB對象,並且它記錄OK,所以它在我稱之爲可用的點上可用。我已經檢查過,我的JS中的click事件確實將data-href屬性更改爲正確的值。當我在fb-comments元素中硬編碼一個不同的data-href時,這些註釋會按預期呈現。

回答

6

我建議你完全從DOM刪除以前的評論框,然後插入一個新的HTML與正確數據HREF,然後調用FB.XFBML.parse方法。

另一件事是,你應該指定解析,像這樣:

FB.XFBML.parse(document.getElementById("container-id")); 
+0

很好的建議感謝Nitzan,這並獲得成功對我來說。 – 2012-04-19 08:28:22

+0

很高興幫助。只是爲了澄清:在調用* parse *方法時指定dom元素不是必須的,它應該與out一起工作,但是通過傳遞它可以防止遍歷整個dom樹。 – 2012-04-19 08:30:00

+0

明白了,謝謝Nitzan。我正在做FB.XFBML.parse(document.getElementById('social'));其中「社交」是FB插件元素容器的ID。這似乎工作。 – 2012-04-19 10:38:28