2011-01-28 66 views
2

我正在使用JavaScript Facebook SDK来解析xfbml元素。不过,我也使用ajax分页。这是发生了什么。如何避免重新分析XFBML元素?

我加载了第一页元素,每个元素包含一个像XFBML中的按钮和注释框。我调用SDK的解析方法来解析元素。

如果用户加载元素的下一页,它们会通过Ajax添加到DOM中。然而,当我现在调用解析方法时,第一页的元素会再次被解析,这显然是不希望的。

我知道,解析方法提供了一个nother入口根,但由于所有的对象是兄弟姐妹,这不是我的选择。有什么办法可以告诉解析只解析尚未解析的元素吗?或者我将不得不删除所有已经解析过的旧xfbml标签?

+0

我试着...... – nambrot 2011-01-30 04:42:35

回答

1

FB.XFBML.parse()是重新解析XFBML的唯一可用函数,您可以将它作为起点传递给DOM元素,也可以不传递任何东西并让它解析整个DOM结构。

由于这些是您唯一的选择,我建议您修改您的Ajax调用。为什么不创建一个<div>(或其他元素),加载你的Ajax获取的内容,然后调用FB.XFBML.parse(),而不是让Ajax调用直接将新元素插入到他们的最终DOM位置,使其更难以重新解析将<div>移动到适当的地方之前?你可以隐藏<div>,并使用解析函数的第二个回调参数做招:

//do Ajaxy stuff here to insert new content into hidden div 'foo' 

FB.XFBML.parse(document.getElementById('foo'), function() {   
    document.getElementById('yourContent').innerHTML += document.getElementById('foo').innerHTML; 
}); 

我还没有在一段时间做JavaScript,因此赦免任何恶劣的语法,但希望你的想法。

+0

这是个好主意。谢谢 – nambrot 2011-01-30 19:41:32