【问题标题】:Setting visited on link in jQuery在 jQuery 中的链接上设置访问
【发布时间】:2011-07-03 02:32:48
【问题描述】:

我在某些超链接上捕获了点击事件,而是使用 href 打开了一个 jQuery UI 对话框。我返回 false 以避免浏览器也这样做......

    $('a.previewable').click(function(){
            $('#dialog').html('<img src="'+$(this).attr('href')+'">');
            $('#dialog').dialog({
                    title: 'Preview',
                    width: 350,
                    modal: true
            });
            return false;
    });

它工作得很好,但是当我点击它时,链接颜色并没有改变为已访问。如何告诉浏览器该链接确实被访问过?

谢谢!

【问题讨论】:

    标签: jquery jquery-ui jquery-ui-dialog


    【解决方案1】:

    好吧,既然你做了return false,它就没有被访问过。您可能做的最好的事情就是设计它。

    $(this).addClass('visited');
    

    css

    .visited {
        color: purple;
    }
    

    【讨论】:

    • 虽然我将其设为a:visited, a.visited { color: #00e; },以便实际访问的链接和标有visited 类的链接的样式相同。
    【解决方案2】:

    这些关于添加自定义类的场景很奇怪。下次刷新页面时会发生什么?您是否不必跟踪具有访问过的类的所有链接并将该信息保存到后端以便可以在后续请求中恢复?我认为所有这些样式都会在下一个请求中消失,因为所有逻辑都在内存中完成,客户端通过 JavaScript。浏览器通常会维护一个缓存并保留该信息。

    【讨论】:

    • 我同意 - 如果信息持续存在会更好。有没有办法做到这一点? UI 对话框中的 AJAX 请求会更好吗?
    • 嗯...它可以完成,但你必须开始在你的超链接上粘贴 id,这样你就知道如何在下次刷新时检索。 AJAX 请求可能会起作用,但我不想为了让链接变成紫色而盲目地往返服务器。这就是你的想法对吗?只是向服务器发出请求而不关心响应?如果你确实想这样做,你最好在这些图像上加上 etag,这样它们就不会盲目服务。我想如果你真的希望它持续存在,那么后者将是最简单的方法。
    • 不,我正在考虑通过 AJAX 将 href 的内容加载到对话框中,因此浏览器正在获取 URL 并且(希望?)将其视为“已访问”
    猜你喜欢
    • 1970-01-01
    • 2013-01-04
    • 2015-02-10
    • 1970-01-01
    • 2014-10-24
    • 2019-06-30
    • 1970-01-01
    • 2017-11-17
    • 2010-12-28
    相关资源
    最近更新 更多