使用jQuery存储单击的链接状态?

时间:2010-10-31 00:12:34

标签: jquery css xhtml cookies

$('#nav a').click(function () {  
    $('#nav a').removeClass('current');  
    $(this).addClass('current');
    return false;  
});

我的HTML是:

<ul id="nav">
<li><a class="current hoc" href="#spread1-anchor">Home</a> /</li>
<li><a class="bgc" href="#spread2-anchor">Background</a> /</li>
<li><a class="apc" href="#spread3-anchor">Approach</a> /</li>
<li><a class="clc" href="#spread4-anchor">Client</a> /</li>
<li><a class="sec" href="#spread5-anchor">Services</a> /</li>
<li><a class="coc" href="#spread5-anchor">Contact</a></li>
</ul>

如果有帮助,我的网址为:Karls Example site

使用上面的jQuery代码 - 当用户刷新页面时,如何存储最后点击的链接?我是jQuery的初学者,虽然我已经看过那里的答案,但大多数都是用滑块或手风琴做的,所以在我学习遏制的这个阶段让我理解得太复杂了! :)

请有人帮忙,或者如果需要的话也可以展示如何实现代码或插​​件(我在网上看到了一个cookie插件)

4 个答案:

答案 0 :(得分:6)

您的链接是否有ID?如果是这样,请在单击时将ID存储在cookie中。所以,像这样:

$('#nav a').click(function () {
  $.cookie('lastclicked',this.id);
  $('#nav a').removeClass('current');  
  $(this).addClass('current');
  return false;  
});

使用jQuery cookie plugin可以减少直接设置cookie的烦恼因素。在页面加载时,查找cookie(请参阅文档),读取其值(如果存在),现在您知道最后一次单击链接的ID。

答案 1 :(得分:1)

首先,您需要一种方法来唯一标识链接 - idhref属性都可以。接下来,获取将为您处理cookie的代码。我将使用the one from quirksmode.org

您可以存储上次使用的锚的唯一标识符,如下所示:

$('#nav a').click(function(){
    $(this).addClass('current').siblings().removeClass('current');

    // Create a cookie that will last 30 days with 
    // the name "link" containing this anchor's id attribute
    createCookie('link', this.id, 30);
    return false;
});

加载下一页时,请按以下方式阅读Cookie:

var lastLink = readCookie('link');

if(lastLink){
    $('#' + lastLink).addClass('lastVisited');
}

答案 2 :(得分:1)

为什么要使用cookies?您的链接具有哈希属性,因此我只需在动画完成后手动设置位置栏的哈希值。

您没有包含执行滚动动画的代码,但是存储了在变量中单击的<a>的哈希值,然后在动画的回调中设置了location.hash

类似的东西:

$('a').click(function() {
    // get the hash from the link
    var hash = this.hash;
    // Do the animation. (This is just example code.)
    // In the callback to the animation, manually set the location bar's hash
    $(document.body).animate({scrollLeft: 500}, 600, function() { 
                                                       location.hash = hash; 
                                                     });
    return false;
});

然后,如果用户刷新页面,则哈希将在那里。

然后,通过使用location.hash检索哈希,您还可以在页面加载时将用户直接带到正确的部分。这将使这些部分成为可收藏的。

答案 3 :(得分:0)

我使用jQuery Address plugin代替Cookie,这样它可以在浏览器窗口/标签页面上运行,并且还提供深层链接。

$('#nav a').click(function () {
  $.address.parameter('lastclicked', this.id);
  $('#nav a').removeClass('current');
  $(this).addClass('current');
  return false;
});