JQuery сохранить несколько файлов cookie для каждой ссылки - PullRequest
2 голосов
/ 01 октября 2011

У меня много ссылок на странице, нажмите на каждую addClass 'проголосовавшую' по этой ссылке. затем сохраните эффект в печенье. чтобы в следующий раз обновить веб-браузер, он сохранит событие addClass.

Мой код здесь, но он сохранит только 1 cookie. Я имею в виду, если я нажму link 1, link 2. он всегда помнит последний клик. обновите веб-браузер. только link 2 addClass 'проголосовал'. link1 пропущено addClass событие. так как сохранить несколько куки для каждой ссылки? Спасибо.

<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 ]

2 голосов
/ 01 октября 2011

изменение имени файла 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();
});
0 голосов
/ 01 октября 2011

решаемая.ссылка здесь: Jquery - сохранить состояние класса для нескольких div # в куки?

поделиться ответом на все.

$(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);
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...