Кнопка как 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