复选框的Jquery触发器事件

复选框的Jquery触发器事件,jquery,checkbox,eventtrigger,Jquery,Checkbox,Eventtrigger,我有一系列的复选框,我已经为它们编写了单击jquery脚本。当用户单击复选框时,它会打开另一系列复选框并继续。现在我的问题是,当用户选中其中的几个复选框,并移动到下一页,出于某种原因,他/她返回到复选框页。然后我应该把他/她检查过的所有盒子打开。 我在加载dom时编写了一个复选框测试 $(document).ready(function(){ if($('.main').is(':checked')){ $(this).trigger('click'); }else{

我有一系列的复选框,我已经为它们编写了单击jquery脚本。当用户单击复选框时,它会打开另一系列复选框并继续。现在我的问题是,当用户选中其中的几个复选框,并移动到下一页,出于某种原因,他/她返回到复选框页。然后我应该把他/她检查过的所有盒子打开。 我在加载dom时编写了一个复选框测试

$(document).ready(function(){
   if($('.main').is(':checked')){
      $(this).trigger('click'); 
   }else{
      //do  nothing
   }

  $('.main').click(function(){
      if($('.main').is(':checked')){
       var val = $(this).attr('alt');
       $('#'+val).show();
   }else{
       var val = $(this).attr('alt');
       $('#'+val).hide();
   }
  });
});

正如你在上面看到的。Main是checkbox类。单击该按钮,我将打开另一系列复选框。现在,我希望在他们再次访问页面时,为他们的复选框自动执行此操作。通常,是浏览器决定“帮助”并重新填写用户已完成的表单。您不应该依赖浏览器,因为设置很容易更改,并且可能因用户而异

相反,您可能需要考虑将单击的复选框存储在cookie/localstorage中,或者通过AJAX将每次单击发送到服务器。然后,当用户登陆页面时,您可以检查cookie的内容或检索通过AJAX保存的单击元素;然后可以在适当的元素上重新创建单击


请勾选此相关文章,以便使用jQuery处理cookie数据-

使用会话或cookie保存。返回时,请勾选主类复选框值,并相应地勾选这些值,然后使用以下代码:

<script type="text/javascript">
$(document).ready(function(){

   $('.main').each(function(){
      if($(this).is(':checked')){
        var val = $(this).attr('alt');
        $('#'+val).show();
      }else{
        var val = $(this).attr('alt');
        $('#'+val).hide();
       }
     });


   if($('.main').is(':checked')){
      $(this).trigger('click'); 
   }else{
      //do  nothing
   }

  $('.main').click(function(){
      if($('.main').is(':checked')){
       var val = $(this).attr('alt');
       $('#'+val).show();
   }else{
       var val = $(this).attr('alt');
       $('#'+val).hide();
   }
  });
});
</script>

$(文档).ready(函数(){
$('.main')。每个(函数(){
如果($(this).is(':checked')){
var val=$(this.attr('alt');
$('#'+val).show();
}否则{
var val=$(this.attr('alt');
$('#'+val).hide();
}
});
如果($('.main')。是(':checked')){
$(this.trigger('click');
}否则{
//无所事事
}
$('.main')。单击(函数(){
如果($('.main')。是(':checked')){
var val=$(this.attr('alt');
$('#'+val).show();
}否则{
var val=$(this.attr('alt');
$('#'+val).hide();
}
});
});

我只需要使用一些JSON和本地存储来跟踪选中的框等

$(document).ready(function () {
    if (localStorage.getItem('boxes')) {
        var boxes = JSON.parse(localStorage.getItem('boxes'));
        $.each(boxes, function (idx, val) {
            var box = $('.main').eq(idx);
            box.prop('checked', val);
            $('#' + box.attr('alt')).toggle(val);
        });
    }

    $('.main').on('change', function () {
        var val = $(this).attr('alt'),
            boxes = {};

        $.each($('.main'), function (i, el) {
            boxes[$(el).index('.main')] = el.checked;
        });

        $('#' + val).toggle(this.checked);
        localStorage.setItem('boxes', JSON.stringify(boxes));
    });
});

我仍然可以提取这些值。我的问题是我希望这些子类元素(选中复选框时打开)在用户再次访问页面时自动打开是的-您必须执行一些
trigger('click')
magic来模拟用户单击这些元素…嗯,检查已保存的数据,并根据先前单击的内容重新创建相同的状态。基本创建的事件,如单击或双击。你可以使用这个触发函数来模拟一个真实的用户点击一个元素。我仍然可以得到这些值。我的问题是,我希望这些子类元素(选中复选框时打开)在用户再次访问页面时自动打开,并且使用此代码它将永远打开!对于会话,请使用sessionStorage。我仍然可以提取值。我的问题是,我希望当用户再次访问页面时,这些子类元素(选中复选框时打开)应自动打开编辑我的代码,然后重试。主复选框是否显示正确的状态?你是怎么做到的?力起作用了!相反,当我刷新页面时,它会选中所有复选框。我不知道wy?