jquery为每个链接保存多个cookie

时间:2011-10-01 08:11:03

标签: jquery cookies

我在页面中有很多链接,点击每个addClass'投票'到此链接。然后将效果保存到cookie中。这样下次刷新Web浏览器时,它将保存addClass事件。

我的代码在这里,但它只会保存1个cookie。我的意思是,如果我点击了link 1link 2。它始终记住最后一次点击。刷新Web浏览器。仅link 2 addClass'投票'。 link1错过addClass事件。那么如何为每个链接保存多个cookie?感谢。

<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/cookie.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  var cookieName = 'up';
  var cookieOptions = {expires: 7, path: '/'};  

  $("#" + $.cookie(cookieName)).addClass('voted');

  $(".up").live('click',function(e){
    e.preventDefault();    
    $.cookie(cookieName, $(this).attr("id"), cookieOptions);
    // save cookie depends on each link id. 
    $("#" + $.cookie(cookieName)).addClass('voted');
  });
});
</script>

<a href="javascript:void(0)" id="m12345678" class="up">link 1</a>
<a href="javascript:void(0)" id="m12345679" class="up">link 2</a>
<a href="javascript:void(0)" id="m12345680" class="up">link 3</a>

上传我的代码jsfiddle

2 个答案:

答案 0 :(得分:2)

更改cookie名称可能会解决问题。

var cn = cookieName + $(this).attr("id");
$.cookie(cn, cookieOptions);
// save cookie depends on each link id. 
$("#" + $.cookie(cn)).addClass('voted');

更新:此更新已添加回答您更新的问题:

function checkIfAllClicked(){
    var flag = false;
    $(".up").each(function(){
        var f = $(this).data("isClicked");
        if(f == true){
            flag = true;
        }
        else{
            flag = false;
        }
    });
    if(flag){
        // refresh the page or call any-other function you want
        document.location.href = "any-url";
    }
}

$(".up").live('click',function(e){
    e.preventDefault();    
    $.cookie(cookieName, $(this).attr("id"), cookieOptions);
    // save cookie depends on each link id. 
    $("#" + $.cookie(cookieName)).addClass('voted');
    $(this).data("isClicked", true);
    checkIfAllClicked();
});

答案 1 :(得分:0)

解决。在这里参考:Jquery - save class state for multiple div #'s to a cookie?

分享所有人的答案。

$(document).ready( function() {
    $(function() {
        var cookieName = 'up_';

        $('.up').each(function() {
            var id = $(this).attr('id'), cookie = cookieName + id;

            if ($.cookie(cookie) !== 'ture') {
                $(this).addClass('voted');
            }
        }).live('click', function(e) {
            e.preventDefault();
            $.cookie(cookieName + $(this).attr('id'), true);
        });
    });
});