我正在使用jQuery将一些内容加载到我正在开发的Web应用程序中的类似于灯箱的div中。使用$ POST,我将调用一个动态填充的页面,其中包含一个youtube视频和一个facebook评论插件。
我加载的第一个视频带有评论,但之后的每个视频本身都是无注释的。关于可能发生的事情有任何快速的想法吗?
这是我正在加载的页面。
<? $video_id = $_POST['video_id']; ?>
<object width="800" height="499">
<param name="movie" value="http://www.youtube.com/v/<? echo $video_id; ?>?modestbranding=1&version=3&hl=en_US&rel=0"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/<? echo $video_id; ?>?modestbranding=1&version=3&hl=en_US&rel=0" type="application/x-shockwave-flash" width="800" height="499" allowscriptaccess="always" allowfullscreen="true"></embed>
</object>
<h5 style="margin:35px 0 8px 0;">Comment on this Video</h2>
<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_US/all.js#xfbml=1&appId=158242874284543";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="http://XXXXXXXXXXXX.com/viewvideo.php?video_id=<? echo $video_id; ?>" data-num-posts="12" data-width="800"></div>
这就是调用它的原因(#view_video是保存灯箱的div,.video_wrapper是显示加载的信息的div。每个缩略图位于一个带有videothumb类的div中,其id设置为youtube视频的唯一ID):
<script>
//VIEW VIDEO
$('.videothumb').click(function() {
$('#view_video').fadeIn('fast');
this_video_id = $(this).attr('id');
$.post( 'viewvideo.php', { video_id: this_video_id },
function( data ) {
//on complete
$('.video_wrapper').html(data);
}
);
});
</script>
谢谢!!!
最佳答案
当您加载第一页时,还将加载Facebook JS SDK,并解析文档中的XFBML标签。
下次将AJAX页面加载到文档中时,JS SDK已经嵌入到您的文档中,因此不会再发生任何事情–并且其中不包含XFBML标签的新解析。
您必须使用FB.XFBML.parse
告诉SDK,它应该再次在文档中搜索(动态添加的)XFBML标签。 (最好给它一个DOM节点作为第一个参数,这样它就不会再次搜索整个文档,而只会搜索发生动态更改的部分。)