2012-04-18 5 views
2

У меня есть фотогалерия JS, которая загружает отдельные изображения из API на страницу, когда пользователи щелкают эскиз. Я бы хотел, чтобы люди могли добавлять комментарии Facebook на каждое изображение. Итак, у меня есть элемент комментариев Facebook на странице, содержащей галерею.FB.XFBML.parse() не обновляет комментарии Facebook

<div class="fb-comments" data-href="" data-num-posts="10" data-width="480"></div> 

На загрузке страницы и первое заполнение галереи я установить атрибут данные-HREF из комментариев к элементу URL для первого изображения (например, http://site.com/gallery/1027/1). Затем, если пользователь нажимает на эскиз, я возвращаю этот атрибут URL для выбранного изображения.

fbComments.attr('data-href', data.link + index); 
FB.XFBML.parse(); 

The FB.XFBML.parse(); является то, что я читал, что вы должны сделать, чтобы получить Facebook, чтобы обновить комментарии. Я добавил комментарий к одному изображению и попытался нажать на миниатюру для изображения без комментариев. Но мой комментарий к первому изображению все еще существует. Может кто подскажет почему?

Я попытался вывести объект FB в свой JS-файл, и он регистрируется в порядке, поэтому он доступен в точке, которую я вызываю. Я проверил, что событие click в моем JS действительно меняет атрибут data-href на правильное значение. И когда я жестко программирую другой файл href в элементе fb-comments, комментарии отображают как ожидалось.

ответ

6

Я полагаю, что вы полностью удалить предыдущее поле для комментариев из РОМА, а затем вставить новый HTML с правой данных HREF и затем вызвать методFB.XFBML.parse.

Другое дело, что вы должны указать, где разобрать, например, так:

FB.XFBML.parse(document.getElementById("container-id")); 
+0

Хорошее предложение спасибо Ницан, это сделал трюк для меня. –

+0

Рад, что это помогло. Просто уточнить: указание элемента dom при вызове метода * parse * не обязательно, и он должен работать с ним, но, передав его, вы предотвратите перемещение всего дерева дерева. –

+0

Получил это, спасибо Ницан. Я делаю это как FB.XFBML.parse (document.getElementById ('social')); где «social» - это идентификатор контейнера элементов для плагинов FB. Кажется, это работает. –

Смежные вопросы