【问题标题】:Method to maintain a:visited links when using Ajax, jQuery使用Ajax、jQuery时维护a:visited links的方法
【发布时间】:2012-05-30 21:01:46
【问题描述】:

我正在使用 jQuery ajax 将内容加载到我的网页中。

当用户点击链接时,href 会变成不同的颜色,表示他们点击了该链接。然而,问题是当从页面中刷新该 ajax 内容以加载其他内容,然后再返回时,用户之前所做的 href 选择将不再保留。

我正在寻找一种方法来跟踪用户在浏览 ajax 网站时访问了哪些链接,以便所有 a:visited 链接保持持久。

内容是动态的,由 MySQL 数据库提供。

【问题讨论】:

  • DOM 是什么样子的? 你对 ajax 响应做了什么?你覆盖了页面中的 page\ 元素吗? :visited 中的 a:visited? 是什么
  • 只向 DOM 插入新元素,不要覆盖旧元素。

标签: jquery ajax


【解决方案1】:

如果您使用 ajax 加载内容,我会假设跟踪之前单击的内容是否只是使用类来代替?

$(document).on('click', 'a', function(e) {
    e.preventDefault();
    //do some ajax stuff
    $(this).addClass('visited');
});

FIDDLE

如果您使用 ajax 重新加载内容,并希望记住访问过的链接,那么它们不会。您可能需要使用 cookie、本地存储或跟踪服务器上单击的内容,例如在会话变量中使用获取内容的同一 ajax 调用中的正确链接进行更新。

那么问题是为什么要从数据库中重新加载内容,而不是在页面上已经存在内容时将其分离并重新附加。

【讨论】:

  • 我相信他还有其他问题。他可能正在对 ajax 响应做一些事情。
  • 这或多或少是我所拥有的并且有效的。我们称之为内容 A。但是当用户加载内容 B(刷新内容 A)然后返回并再次加载内容 A 时,那些 href 选择不再存在。
  • 致您的编辑>>编辑>>好问题。我从未考虑过分离内容。我可以在 jQuery 中做到这一点还是在 PHP 中做到这一点?
  • 是的,看看 jQuery 的 detach(),它保留了事件处理程序等,并让您只需将已加载的内容保留在变量中,然后当有人点击相同的内容时再将其放回链接,无需重新加载已经加载过一次的内容。您将需要一个函数来检查内容是否已经从数据库中加载,但是一些简单的事情,例如检查变量是否已定义或某些东西会这样做。
猜你喜欢
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 2013-01-06
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多