Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何避免重新解析XFBML元素?_Javascript_Facebook_Facebook Graph Api - Fatal编程技术网

Javascript 如何避免重新解析XFBML元素?

Javascript 如何避免重新解析XFBML元素?,javascript,facebook,facebook-graph-api,Javascript,Facebook,Facebook Graph Api,我正在使用JavaScript Facebook SDK解析xfbml元素。但是,我也使用ajax分页。下面是发生的情况 我加载元素的第一页,每个元素在XFBML中都包含一个like按钮和一个注释框。我调用SDK的parse方法来解析元素 如果用户加载了元素的下一页,它们将通过Ajax添加到DOM中。然而,当我现在调用parse方法时,第一个页面的元素再次被解析,这显然是不需要的 我知道parse方法提供了另一个条目根,但由于所有对象都是同级对象,所以我不选择这个选项。有没有办法告诉解析器只解析

我正在使用JavaScript Facebook SDK解析xfbml元素。但是,我也使用ajax分页。下面是发生的情况

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

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

我知道parse方法提供了另一个条目根,但由于所有对象都是同级对象,所以我不选择这个选项。有没有办法告诉解析器只解析他尚未解析的元素?或者我必须删除所有已经解析过的旧xfbml标记吗?

是重新解析xfbml的唯一可用函数,您可以将DOM元素作为起点传递给它,也可以不传递任何内容,让它解析整个DOM结构

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

//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了,所以请原谅我的语法有点过分,但希望你能理解我的意思