2011-01-28 40 views
2

我正在使用JavaScript Facebook SDK來解析xfbml元素。不過,我也使用ajax分頁。這是發生了什麼。如何避免重新分析XFBML元素?

我加載了第一頁元素,每個元素包含一個像XFBML中的按鈕和註釋框。我調用SDK的解析方法來解析元素。

如果用戶加載元素的下一頁,它們會通過Ajax添加到DOM中。然而,當我現在調用解析方法時,第一頁的元素會再次被解析,這顯然是不希望的。

我知道,解析方法提供了一個nother入口根,但由於所有的對象是兄弟姐妹,這不是我的選擇。有什麼辦法可以告訴解析只解析尚未解析的元素嗎?或者我將不得不刪除所有已經解析過的舊xfbml標籤?

+0

我試着...... – nambrot 2011-01-30 04:42:35

回答

1

FB.XFBML.parse()是重新解析XFBML的唯一可用函數,您可以將它作爲起點傳遞給DOM元素,也可以不傳遞任何東西並讓它解析整個DOM結構。

由於這些是您唯一的選擇,我建議您修改您的Ajax調用。爲什麼不創建一個<div>(或其他元素),加載你的Ajax獲取的內容,然後調用FB.XFBML.parse(),而不是讓Ajax調用直接將新元素插入到他們的最終DOM位置,使其更難以重新解析將<div>移動到適當的地方之前?你可以隱藏<div>,並使用解析函數的第二個回調參數做招:

//do Ajaxy stuff here to insert new content into hidden div 'foo' 

FB.XFBML.parse(document.getElementById('foo'), function() {   
    document.getElementById('yourContent').innerHTML += document.getElementById('foo').innerHTML; 
}); 

我還沒有在一段時間做JavaScript,因此赦免任何惡劣的語法,但希望你的想法。

+0

這是個好主意。謝謝 – nambrot 2011-01-30 19:41:32