【问题标题】:jQuery Mobile returns an error when trying to trigger pagecreatejQuery Mobile 在尝试触发 pagecreate 时返回错误
【发布时间】:2013-09-29 00:05:23
【问题描述】:

我在我的项目中使用 jQuery Mobile,我遇到了这个问题。

Uncaught TypeError: Cannot read property 'options' of undefined 

如果我只有一个页面似乎不会抛出这个错误,但是当我有两个或多个页面时,我在所有页面上触发pagecreate触发事件后,就会出现这个错误。

Some answers on SO 暗示 jQuery 2.x 可能是原因,因为 jQuery Mobile 似乎不能很好地使用它。但我使用的是 1.9.1 和 jQuery Mobile 1.3.1。他们应该一起工作。

有什么想法吗?

这是问题的演示:http://jsfiddle.net/DerekL/V4qGQ/

【问题讨论】:

  • 如何触发页面创建以及何时触发?
  • @Omar - 在将模板页眉和页脚应用到所有页面后,我触发了pagecreate
  • 只在活动页面触发pagecreate,其他页面不需要触发。在显示页面之前,将增强附加到 dom 的项目。编辑:现在试试这个jsfiddle.net/Palestinian/V4qGQ/1 我正在使用 iPad,我没有控制台日志。编辑:仅当您将页眉、页脚、面板和项目附加到面板时才在活动页面上触发它。
  • @Omar - 谢谢!它确实解决了这个问题。您可能希望将其发布为答案,以帮助同样遇到此问题的其他人。

标签: javascript jquery jquery-mobile


【解决方案1】:

使用.trigger('pagecreate') 等增强方法只能在活动页面上使用。

$.mobile.activePage.trigger('pagecreate');

此外,在向当前活动页面动态添加主要部分时使用.trigger('pagecreate'):页眉、页脚、导航栏、面板以及向面板添加需要增强的项目时。

【讨论】:

    【解决方案2】:

    pagecreate 事件由 jQuery mobile 本身触发。

    在 DOM 中创建页面(通过 ajax 或其他方式)但在所有小部件都有机会增强包含的标记之前触发

    写在 API 文档jQueryMobile

    【讨论】:

    • 你读过我的代码吗?我已将内容动态添加到 DOM 中,因此我必须触发 pagecreate 事件以重新应用格式。
    • 我认为我过去遇到过类似的问题,所以我认为在这种情况下你需要触发“create”事件而不是 $("#pageId").trigger("create");
    • 谢谢,但我知道我是否只为它工作的活动页面触发它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    相关资源
    最近更新 更多