1

我正准备实现类似 Twitter 的无限滚动到我的产品页面。也就是说,当我跨越某些滚动阈值时,使用 AJAX 加载其他页面部分。但我不确定标题中的主题在加载后会受到怎样的影响。我的问题如下:

  1. 对于每一批使用 AJAX 加载的新元素,DOM 会为这些新元素更新还是完全更新?旧的 DOM 会发生什么?

  2. 我是否能够在这些新的 DOM 元素上使用 Javascript 和 jQuery,就像我在页面开始使用的 DOM 上一样?我想这与第一个问题有关。

  3. 对于每次加载,我将加载 9 个新产品。每个产品都有一个使用 FB Open Graph API 的 FB Like 按钮。新产品的 Like 元素是否会经历与我开始使用的 DOM 元素相同的异步修改,以便可以进行适当的 Like 提交?

4

2 回答 2

1

让我们一一开始。

  1. 在您的意图中,DOM 应该只更新,而不是更新。没有旧的 DOM,因为您所做的是在它们上插入新元素。

  2. 是的,你将能够做到这一点。但要小心使用事件侦听器,因为如果您错误地启动它们,您将不得不再次将新的事件侦听器附加到这些新节点。例如:

    $('body').on('click','a.addToCart',function(){}) // 将匹配当前和未来的节点 $('a.addToCart').on('click',function( ){}); // 只会匹配当前节点

  3. 是的,您需要再次对每个按钮执行相同的过程。

额外提示:如果您关心移动环境,则应通过删除不需要的节点来尽可能保持 DOM 干净。

于 2012-12-27T22:50:02.493 回答
0
  1. 只需使用 document.appendChild() 将新元素添加到 DOM。(http://www.w3schools.com/jsref/met_node_appendchild.asp)重建漏洞页面将是浪费时间;)

  2. 应该没有问题。我已经做过很多次了,没有任何问题。如果您使用的是 jQuery Mobile,您可能必须刷新新元素。(看看你正在使用的 jQuery Mobile Widget 的方法,是否需要刷新)

  3. 我对facebook api没有太多经验,但我会说“是”=)

编辑:我的回答中有一个指向德国网站的链接。我忘了这是一个英文网站;)

于 2012-12-27T22:52:35.023 回答