Кнопка как Tumblr не работает после бесконечной прокрутки AJAX отзыва

Есть несколько похожих сообщений, но они устарели, и, насколько я знаю, Tumblr обновил похожую часть API не так давно.

Создать кнопку "лайк" так же просто, как {LikeButton}

и это прекрасно работает, но после того, как ajax напоминает, чтобы получить больше сообщений с того, что будет на следующей странице, кнопка "лайк" больше не работает.

Я взглянул на документацию, и в ней говорится, что мне нужно выполнить одно из следующих действий. Мне было интересно, сможет ли кто-нибудь указать мне правильное направление? Я пытался заставить это работать несколько часов.

Я составил пример блога, если это помогает способствовать ответу, javascript может сделать массовое внедрение новых изображений.

http://stackruexample.tumblr.com/

Если вам нужна дополнительная информация, я с удовольствием отредактирую это и добавлю то, что требуется, спасибо!

1 ответ

Обзор

Адаптировано из моего предыдущего ответа здесь: Использование кнопки "Нравится" в Tumblr с бесконечной прокруткой

Tumblr утверждает, что нам нужно вызвать одну из двух функций, чтобы получить статус Like. Я бы посоветовал следующее:

Функция: Tumblr.LikeButton.get_status_by_post_ids([n,n,n]) Описание: Запрос статуса лайка для отдельных сообщений. Принимает массив идентификаторов сообщений

После успешного выполнения запроса ajax у нас должен быть data объект (содержащий новые сообщения и т. д.).

Нам нужно создать массив postIDs, который представляет собой массив, содержащий идентификатор / номер для каждого сообщения в dataобъект. Самый простой способ добавить идентификатор сообщения - использовать переменную темы{PostID}.

пример

HTML

<article class="post" id="{PostID}">...</article>

Массив идентификаторов сообщений jQuery

var $newPosts   = $(data).find('.post');
var $newPostIDs = $newPosts.map(function () {
    return $(this).attr('id');
}).get();

Tumblr.LikeButton

Tumblr.LikeButton.get_status_by_post_ids($newPostIDs);

Подсказки

Создайте массив и вызовите Tumblr.LikeButtonпосле успешного выполнения запроса ajax и в месте, где вы запускаете другие функции для новых сообщений. Это также можно сделать с помощью чистого javascript, используя: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Другие вопросы по тегам