2012-09-16 40 views
2

我使用一個簡單的腳本重新加載一個divFacebook like button在使用load()刷新div後不顯示;

$('#mydiv').fadeOut('300').load('# #mydiv').fadeIn("300");

的問題是,我重裝div有Facebook的喜歡裏面的按鈕。在DIV重新加載後,我可以在源代碼中看到它已更新,但由於某種原因該按鈕被隱藏。

有什麼辦法強制按鈕重新繪製?

+1

'load('##mydiv')'是一個錯字嗎?你認爲'.load()'是否適用於'##myDiv'? – dbf

+0

這不是一個錯字。我發現把它簡單地#myDiv不會刷新我的PHP包含(使用WordPress生成一個隨機文章),而是產生它在頁面第一次加載時繪製的相同隨機文章。 –

回答

0

facebook按鈕不會顯示,因爲它只是在document.load之後配置。

如果在文檔已經加載並且Facebook javascript SDK已經初始化時加載div內容。它不會工作。

如果facebook不是必需的,直到div加載。您可以嘗試在div中加載「all.js」腳本。

否則,如果你有這個想法,你一定要檢查應用程序的設計。

+0

多次嵌入JS SDK不是一個好主意。爲了重新解析XFBML標籤,'FB.XFBML.parse'是指定的方法。 – CBroe

2

正如我在我的評論說,我認爲.load被誤解,因爲你在你的問題說

我可以看到它的源裏面更新,但按鈕被隱藏某種原因

..所以,考慮到這一點,我假設你有正確的參數加載功能。

你在這裏有一個同步問題。您在鏈中使用的所有內容都使用時間表,並且​​就是異步的。

因此,不必只是鏈接所有東西,而是必須使用回調來了解特定函數的時間尺度何時結束。

$('#myDiv').fadeIn('300', function() { 
    // callback when #myDiv is faded out (display:none;) 
    $(this).load('url', function() { 
    // callback when #myDiv is loaded with new content from the given 'url' 
    $(this).fadeIn('300'); 
    }) 
}); 
+0

我剛剛在網站上試過這個。它似乎打破了我用來完全隨機化帖子的按鈕。 我使用的代碼是: 功能nextPost() { $( '#myDiv')淡入( '300',函數(){$ (本).load( 'randompost.php',函數(){ $(this).fadeIn('300'); }) }); } –

+0

以及函數nextPost()如何被調用?在'$(document).ready()'中還是等價的? – dbf

+0

(只是在這裏集思廣益)嘗試在.load的回調函數中調用FB.init(),看看會發生什麼。 –