在addClass之后更新jquery cookie pb,一些div不应该创建类cookie

时间:2013-09-06 13:27:42

标签: jquery cookies

感谢Arun P Johny我实现了这个代码,但是,仍然有一个pb,基本上,你点击一个div然后添加类绿色背景,所以我想在重新加载页面后保留该类,我使用jquery实现它的cookie插件,pb是没有选中复选框的div,不应该在页面重新加载后取活动类,但不幸的是它的情况......

var $qsts = $(".quest").show();
var $anrs = $(".ans").hide();

$('.quest').click(function(){
    var $ans = $(this).next().toggle(10);
    $anrs.not($ans).hide();
});

$('.ans').change(function(){
    var $ans = $(this).closest('.ans');
    var $act = $ans.prev().toggleClass('question-active', $ans.find('input:checkbox:checked').length > 0)

    if($act.hasClass('question-active')){
        $.cookie('question-active', $act.get(0).className.match(/\b(question\d*)\b/)[1])
    } else {
        $.removeCookie('question-active');
    }
});

var active = $.cookie('question-active');
if(active){
    $qsts.filter('.' + active).addClass('question-active')
}

以下是完整的代码:http://jsfiddle.net/arunpjohny/hZeyd/7/

请求帮助

1 个答案:

答案 0 :(得分:2)

看看

var $qsts = $(".quest").show();
var $anrs = $(".ans").hide();

$('.quest').click(function(){
    var $ans = $(this).next().toggle(10);
    $anrs.not($ans).hide();
});

$('.ans').change(function(){
    var $ans = $(this).closest('.ans');
    var $act = $ans.prev().toggleClass('question-active', $ans.find('input:checkbox:checked').length > 0)

    var items = JSON.parse($.cookie('question-active') || '[]');
    var qstName = $act.get(0).className.match(/\b(question\d*)\b/)[1];
    if($act.hasClass('question-active')){
        if($.inArray(qstName, items) == -1){
            items.push(qstName)
        }
    } else {
        items.splice($.inArray(qstName, items), 1)
    }
    $.cookie('question-active', JSON.stringify(items))
});

var items = JSON.parse($.cookie('question-active') || '[]');
if(items && items.length){
    $qsts.filter('.' + items.join(', .')).addClass('question-active')
}

演示:Fiddle