Javascript 到达并加载无限滚动后,如何重新加载jquery函数

Javascript 到达并加载无限滚动后,如何重新加载jquery函数,javascript,jquery,scroll,infinite,Javascript,Jquery,Scroll,Infinite,我使用jquery插件进行无限滚动,除了需要运行的客户端脚本外,它工作得非常好 我的无限滚动脚本是: <script type="text/javascript"> $('.infinite-container').waypoint('infinite', { container: 'auto', items: '.infinite-item', more: '.infinite-more-link', offset: 'bot

我使用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>
我的关键问题是我的twitter和facebook按钮无法加载。我所能看到的只是“推特”这个词,而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>

(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_GB/all.js#xfbml=1&appId=********”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
除此之外:

    <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>

$(文档).ready(函数(){
$('.container').stickem();
});
!函数(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');

我是javascript/jquery新手,所以欢迎您提供任何建议。谢谢。

您通常希望将所有代码放在一个函数中,该函数在页面的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>

$(文档).ready(函数(){
$('.infinite container')。航路点('infinite'{
容器:“自动”,
项目:'.infinite项目',
更多:'.无限多链接',
偏移量:“视图中的底部”,
loadingClass:“无限加载”,
onBeforePageLoad:$.noop,
onAfterPageLoad:$.noop
});
});
facebook和twitter已经做到了这一点,就像大多数其他为网络上的任何人开发的库一样,因此,通常只需确保自己的脚本在HTML源解析到足以构建初始元素树(“DOMContentLoaed”事件)之前不会启动即可。

对于twitter,您需要:

twttr.widgets.load()
FB.XFBML.parse();
见:

对于facebook,您需要:

twttr.widgets.load()
FB.XFBML.parse();
见:

这可以在动态渲染按钮下面调用

onAfterPageLoad用于调用函数,如果使用它,请小心如下调用:

onAfterPageLoad: functionName
不是


然而,对于fb/twitter按钮的问题,我认为最好将代码直接放在按钮下面

如果操作正确,document.load中发生的操作将不会再次执行,而这正是您需要加载Facebook脚本的地方。如果我将其放置在document.ready函数中,则该函数将中断。此外,请确保已在该点加载“waypoint”函数。