原始文章适用于 jQuery Mobile 1.4 之前使用的旧的页面处理方式。这种旧方法现已弃用,并将保持有效,直到 jQuery Mobile 1.5(含),这意味着至少在明年和 jQuery Mobile 1.6 之前您仍然可以使用下面提到的所有内容。
旧事件,包括 pageinit ,不再存在并已被 pagecontainer 小部件取代。 Pageinit 被完全删除,您可以使用 pagecreate 代替,保持不变。
如果您对处理页面事件的新方式感兴趣,请参阅这篇文章。否则,请随意继续阅读本文,因为它不仅仅涵盖页面事件,还可能提供有价值的信息。
本文也可以作为我的博客的一部分找到这里.
当你第一次学习 jQuery 时,你会被教导在 $(document).ready() 函数中调用代码,这样一切都会在 $(document).ready() 函数内执行DOM 已加载。然而,在 jQuery Mobile 中,Ajax 用于在您导航时将每个页面的内容加载到 DOM 中,这意味着 $(document).ready() 将在加载第一个页面之前触发。因此,任何用于页面操作的代码都将在页面刷新后执行,这可能会导致微妙的错误。在某些系统上,它可能看起来工作正常,但在其他系统上,它可能会导致不稳定且难以重复的行为。
经典 jQuery 语法:
$(document).ready(function() { });
解决此问题(这确实是一个问题),jQuery Mobile 开发人员创建了页面事件。简而言之,页面事件是在页面执行的特定点触发的事件。其中一个页面事件是 pageinit,我们可以按如下方式使用它:
$(document).on('pageinit', function() { });
我们可以通过使用页面 ID 而不是文档选择器来更进一步。假设我们有一个 ID 为 index:
<div data-role="page">
的 jQuery Mobile 页面,要执行仅适用于索引页面的代码,我们可以使用以下语法:
$('#index').on('pageinit', function() { });
pageinit 事件将在每次页面即将加载并首次显示时执行 时间。除非手动刷新页面或者关闭Ajax页面加载,否则不会再次触发。如果您希望每次访问页面时都执行代码,最好使用 pagebeforeshow 事件。
这里有一个演示此问题的工作示例:http://jsfiddle。网/Gajotres/Q3Usv/
关于这个问题的更多说明。无论您使用的是具有多个页面的 1 HTML 还是多个 HTML 文件范例,都建议将所有自定义 JavaScript 页面处理分离到一个单独的 JavaScript 文件中。这不会使您的代码变得更好,但它将提供更好的代码概述,特别是在创建 jQuery Mobile 应用程序时。
还有另一个特殊的 jQuery Mobile 事件,称为 mobileinit。当 jQuery Mobile 启动时,它会在文档对象上触发 mobileinit 事件。要覆盖默认设置,请将它们绑定到 mobileinit。 mobileinit 用法的一个很好的例子是关闭 Ajax 页面加载或更改默认的 Ajax 加载器行为。
$(document).ready(function() { });
所有页面事件的列表可以在这里找到:http://api.jquerymobile.com/category/events/
假设我们有页面A和页面B;这是卸载/加载顺序:
为了更好地理解页面事件,请阅读这个:
以上是jQuery Mobile:`$(document).ready()` 与 `$(document).on('pageinit')` – 我应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!