2013-06-02 16 views
0

即時使用jquery插件進行無限滾動,除了需要運行的客戶端腳本之外,它的工作完美無缺。如何在無限滾動到達並加載後重新加載jQuery的功能

我無限滾動的腳本是:

<script type="text/javascript"> 
    $('.infinite-container').waypoint('infinite', { 
     container: 'auto', 
     items: '.infinite-item', 
     more: '.infinite-more-link', 
     offset: 'bottom-in-view', 
     loadingClass: 'infinite-loading', 
     onBeforePageLoad: $.noop, 
     onAfterPageLoad: $.noop 
    }); 
</script> 

什麼,我想我需要做的使用,這是莫名其妙地叫我的服務器端腳本:

onAfterPageLoad: 

我的關鍵問題是,我的Twitter和Facebook按鈕加載。我所能看到的就是「twitter」這個詞,facebook按鈕根本就沒有出現。 但在最初的頁面上,它們加載沒有問題。

不知何故,我需要重新加載此:

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=***********"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

以及這些:

<script> 
     $(document).ready(function() { 
      $('.container').stickem(); 
     }); 
    </script> 

<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> 

即時通訊相當新的JavaScript/jQuery的,所以任何的建議是值得歡迎的。謝謝。

+0

如果你做得對,在document.load中發生的事情不會再次執行,這就是你需要加載Facebook腳本的地方。 – mplungjan

回答

0

您通常希望將所有代碼放入一個函數中,該函數在頁面的DOM完成構建後會被調用。在jQuery中,這樣做與ready功能:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.infinite-container').waypoint('infinite', { 
      container: 'auto', 
      items: '.infinite-item', 
      more: '.infinite-more-link', 
      offset: 'bottom-in-view', 
      loadingClass: 'infinite-loading', 
      onBeforePageLoad: $.noop, 
      onAfterPageLoad: $.noop 
     }); 
    }); 
</script> 

Facebook和Twitter已經做到這一點,因爲這樣做已經開發用於大多數其他圖書館的人 - 上的的web,所以通常只有以確保您的腳本不會在HTML源代碼被分析到足以構建初始元素樹(「DOMContentLoaed」事件)之後才啓動。

+0

如果我把它放在document.ready函數中,函數就會中斷。 – user2360599

+0

也確保「航點」功能已在該點加載。 –

1

Twitter的需要:

twttr.widgets.load() 

參見:https://dev.twitter.com/discussions/890

對於Facebook,你需要:

FB.XFBML.parse(); 

參見:https://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse/

這可以被稱爲下動態地呈現鈕釦。

onAfterPageLoad用於調用一個函數,如果使用它只是要小心這樣稱呼它:

onAfterPageLoad: functionName 

onAfterPageLoad: functionName() 

不過,對於FB/Twitter的按鈕的問題我認爲你最好把代碼放在按鈕下面。