0

感谢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/

谢谢帮助

4

1 回答 1

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')
}

演示:小提琴

于 2013-09-06T13:59:03.443 回答