как я могу перезагрузить функции 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 не загружаются. все, что я вижу, это слово «твиттер», а кнопки 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, поэтому любые советы приветствуются. Благодарю.


person user2360599    schedule 02.06.2013    source источник
comment
Если вы все делаете правильно, то, что происходит в document.load, больше не выполняется, и именно здесь вам нужно загрузить скрипт Facebook.   -  person mplungjan    schedule 02.06.2013


Ответы (2)


Для твиттера нужно:

twttr.widgets.load()

См.: https://dev.twitter.com/discussions/890

Для фейсбука нужно:

FB.XFBML.parse();

См.: https://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse/

Это можно назвать ниже динамически отображаемых кнопок.

onAfterPageLoad используется для вызова функции, если вы используете ее, просто будьте осторожны, вызывая ее следующим образом:

onAfterPageLoad: functionName

нет

onAfterPageLoad: functionName()

Однако для проблемы с кнопками fb/twitter, я думаю, вам лучше разместить код сразу под кнопками.

person Daniel Winer    schedule 04.07.2013

Обычно вы хотите разместить весь свой код внутри функции, которая вызывается после завершения построения 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 уже делают это, как и большинство других библиотек, которые были разработаны для использования кем-либо в Интернете, поэтому вам обычно нужно только убедиться, что ваши собственные скрипты не сработают до тех пор, пока исходный код HTML не будет достаточно проанализировано для построения начального дерева элементов (событие "DOMContentLoaed").

person Mike 'Pomax' Kamermans    schedule 02.06.2013
comment
функция прерывается, если я помещаю ее в функцию document.ready. - person user2360599; 03.06.2013
comment
также убедитесь, что функция путевой точки была загружена в этой точке. - person Mike 'Pomax' Kamermans; 03.06.2013