2011-09-06 44 views
0

我使用ShareThis/AddThis並希望在我的頁面上隱藏共享計數時,他們等於零。jQuery().hide偶爾在通過javascript添加的共享鏈接上工作

我遇到的問題是,.hide()不工作可靠,它只能在某些時候,當鏈接的頁面上出現一次。在具有多個共享鏈接實例的頁面上,它僅適用於第一組。

我的猜測是它不工作,因爲它需要的鏈接出現在很長一段時間。在頁面的主體只顯示這是我使用的代碼:

<script type="text/javascript"> 
jQuery(function($) { 

$('.stBubble').each(function(){   
    if($(this).text() == '0' || $(this).text() == 'New') { 
     $(this).hide(); 
    } 
}); 
}); 

它出現在我的頁腳;在頁面模板中的ShareThis代碼是這樣的:

<li><span class='st_twitter_vcount' displayText='Tweet'"></span></li> 
<li><span class='st_facebook_vcount' displayText='Facebook'"></span></li> 
<li><span class='st_email_vcount' displayText='Email'"></span></li> 
<li><span class='st_sharethis_vcount' displayText='Share'"></span></li> 

我需要做些什麼才能使這個工作?

+0

在內容中,我看不到'stBubble'類,它們會匹配您的jQuery選擇器。 – jfriend00

回答

1

攻擊這個負載計時問題的首選方式是找到當前頁完成自身插入到頁面以獲取通知的編程方法。由於它是第三方JS,因此您必須爲該通知找到受支持的addThis API,或者您必須破解他們的庫(例如,用自己的函數替換其中一個函數,調用原始函數並通知您)。

如果你不能找到一個辦法做到的首選方式,那麼我唯一知道的另一種方式是,直到你發現在頁面的前頁的東西來輪詢頁面。您可能會使用一個相當短的間隔計時器來查找addThis HTML的某些部分,您知道在添加它的東西時它總是存在。發現後,您可以取消間隔計時器並調用您的功能來隱藏您想要隱藏的內容。因爲間隔計時器可能不會立即捕獲新內容,所以在JS運行之前,您可能會獲得內容的閃光以隱藏您不想看到的內容。這可以通過添加靜態CSS規則來解決,默認情況下隱藏所有addThis計數器的東西,當您的JS運行時,它可以覆蓋,使所需的可見。如果你這樣做,你想隱藏的內容永遠不會閃爍或可見。

我要補充一點,輪詢內容的頁面是最後的手段,你必須確保你的間隔計時器始終得到即使從來沒有出現的內容取消。否則,他們可能會陷入觀衆的瀏覽器。

0

我會環顧四周在前頁API,看看是否能找到正在發生的事件的回調函數。如果是這樣,請爲您的函數命名,然後在每次發生回調事件時調用該函數。如果其延遲問題,那應該解決它。