1

我正在优化我的评论功能,我在两种策略之间进行选择。我的评论列表是一个无序列表。

  1. 用响应中的 UL 替换 DOM 中的 UL。
  2. 将响应中的最后一个 LI 插入 DOM 中的 UL。

第一个选项更简单,但我觉得这不是最好或正确的方法。如果我想使用第二个选项,如果同时发布了多个评论,我如何知道响应中的哪些评论比 DOM 中的评论更新?

想法?

4

4 回答 4

2

您可以将时间戳保留为变量供 JS 参考。

当您加载页面时,您的服务器端语言会将要加载的最后一条评论的时间戳分配给 javascript 变量。从那时起,每次您加载更多评论时,发送您请求的最后一个时间戳。您的服务器端语言将检查比该时间戳更新的评论。确保在发送更多请求时更新时间戳。通过将其作为响应的一部分发送或跟踪您何时发送请求。

于 2011-04-17T10:18:27.697 回答
0

我会选择选项 1。它实现起来要简单得多,实际上可能执行得更快。但是请确保没有任何事件处理程序绑定到 LI - 在您更新其父 UL 后,它们将停止工作。使用委托来避免这种情况。

于 2011-04-17T10:16:39.160 回答
0

您应该在评论中附加ULlatest LIs。为什么?您不必获取所有完整的 UL 列表并替换旧列表。减少必须进行的更改。只需获取最新的LI并将其附加到最后。LESS WORK MORE EFFICIENT

到目前为止,您的问题是关于如何知道哪一个是最新评论。存储时间戳,因为评论存储在数据库中。在第一次获取评论的同时,尝试分配保存最后一项时间戳的变量,然后在数据库中搜索所有与您存储的时间戳相关的内容后,获取列表并附加它们,然后更新变量,再次使用最新的时间戳。

于 2011-04-17T10:16:55.730 回答
0

假设您的无序列表是这样的:

<ul id="commentsList">
<li>Comment 1</li>
</ul>

在javascript中你会写:

$.ajax({
  url: "the ajax url",
  type: "GET",
  data: {//whatever data},
  success: function(r){
    //Assuming r contains the comment. 
    //(Don't send html as the response but just the comment text
    $("#commentsList").append("<li>" + r + "<li>");
  }
});
于 2011-04-17T10:17:45.910 回答