如何记住Crossrider中弹出窗口的状态?

时间:2014-03-31 08:46:48

标签: javascript jquery popup crossrider

我在Crossrider中有一个弹出窗口,其中有一个复选框。它看起来像这样:

popup.html

<body>
    <div data-role="page" id="div1">
        <label for="checkbox1">Enable Something</label>
        <input type="checkbox" id="checkbox1">
    </div>
</body>

现在,当用户关闭弹出窗口时,我希望弹出窗口能够记住复选框的状态。因此,如果用户启用了#checkbox1,我希望下次打开弹出窗口时仍然启用它。

我尝试过这样做但不起作用:

popup.js

$(document).ready(function(){ 
    $('#checkbox1').on('change', function(){
        if ($(this).is(':checked'))
            $('#checkbox1').prop('checked', true);    
        else
            $('#checkbox1').prop('checked', false);
    })
});

这样做的正确方法是什么?

谢谢!!!

1 个答案:

答案 0 :(得分:2)

弹出窗口的调用之间不保留弹出内容;因此,您必须将状态保存在弹出范围之外,通常是使用appAPI.db在Crossrider数据库中为少量数据保存。

此外,此类代码最好放在 crossriderMain 函数中,该函数在页面准备就绪时自动调用。

例如:

<!DOCTYPE html>
<html>
<head>
<!-- This meta tag is relevant only for IE -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<script type="text/javascript">
function crossriderMain($) {
  if (appAPI.db.get('checkbox1'))
    $('#checkbox1').prop('checked', true);    
  else
    $('#checkbox1').prop('checked', false);

  $('#checkbox1').on('change', function(){
    appAPI.db.set('checkbox1', $(this).is(':checked'));
  })
}
</script>
</head>
<body>
  <div data-role="page" id="div1">
    <label for="checkbox1">Enable Something</label>
    <input type="checkbox" id="checkbox1">
  </div>
</body>
</html>

[披露:我是Crossrider员工]