0

我正在创建一个 JQuery Mobile Web 应用程序,在一个页面上我有 javascript,它获取存储在 HTML5 本地存储中的值并使用它们的值更新页面上的 Web 控件。Web 控件之一是滑块控件。

每次访问页面时,我都需要执行 javascript,以便从本地存储中正确更新控件。我发现在每个页面上触发的唯一适用的 JQuery 事件是 pageshow 和 pagebeforshow 事件,因此我尝试绑定代码以在这些事件期间执行。示例如下:

  var onPageShow = function () {
    // Restore setting values from device browser local storage
    if (localStorage.getItem("mmb_AutoLogin")) {
      $('#AutoLogin').val(localStorage.getItem("mmb_AutoLogin").toLowerCase());
      $('#AutoLogin').slider('refresh');
    }
  };

  $(document).delegate('#maxsettings', 'pageshow', onPageShow);

问题是尝试引用滑块时出现错误:0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法“滑块”

在更改默认值后,我需要刷新滑块 Web 控件,否则它不会在视觉上发生变化。

这就是问题所在。每次页面加载和更新滑块 Web 控件时如何运行脚本而不会出现错误?我觉得我必须越过障碍才能让 jQuery Mobile 处理本应如此简单的事情。

4

2 回答 2

0

这就是我解决问题的方法,以防有人想知道每次访问页面时如何执行 JQuery Mobile 代码。

  $(document).ready(function () {
    $('#maxsettings').bind('pageshow', function () {
      // To execute each time page is shown
      // Restore setting values from device browser local storage
      if (localStorage.getItem("mmb_AutoLogin")) {
        $('#AutoLogin').val(localStorage.getItem("mmb_AutoLogin").toLowerCase()).slider('refresh');
       }
    });
  });

我只想说,根据我的经验,我在互联网上发现了大量关于 JQuery Mobile 的相互矛盾的信息,我认为不应该这样。对于上述情况,应有明确记录的标准。这将使每个人都更容易创建移动网络应用程序。

于 2013-07-24T13:26:10.647 回答
0

您可以在此处查看工作示例

我的建议是:

  1. 使用“on”功能而不是“delegate”$('#maxsettings').on('pageshow', onPageShow);
  2. 将“mmb_AutoLogin”的值存储在本地变量中,这样可以减少访问本地存储的次数var autoLogin = localStorage.getItem("mmb_AutoLogin")
  3. 运行你的代码$(document).ready
于 2013-07-24T13:43:58.703 回答