【问题标题】:Correctly calling javascript per-page with jquery mobile使用 jquery mobile 正确调用每页 javascript
【发布时间】:2012-02-16 00:34:27
【问题描述】:

我有几页是用 jquery mobile 制作的。这些页面都是单独的文件,例如 register.php。每个文件都有一个“页面”,如文字 jquery mobile div.page

当我点击一个链接时,ajax 调用这个新文件并提取 div.page -- 而不是像标准链接那样加载新页面。

我有一个函数,它最初绑定到特定页面的 onload 事件(register.php)。现在,因为它是通过 ajax 拉入而不是加载新页面,所以该页面的 javascript 永远不会触发。

我需要根据 JQM 文档使用 pageinit() 或 pagecreate() - 但他们没有解释如何执行此操作...

我需要绑定其中一个事件,可能是 pagecreate,因为我需要在所有元素都准备好后使用我的函数。但是如何使用相同的脚本区分一个页面和另一个页面呢?

如果我在我的<head> 中有一个指向register.js 的链接仅用于 register.php,那么在通过 ajax 拉入时甚至不会使用它 - 因为它只拉入 <body>

假设我有一个名为register_form() 的函数。每次打开register.php 时如何调用它?这包括点击后退按钮。

我看了这里,jQuery Mobile - pageinit and pagecreate only firing once。但是,当您转到其他页面时,不会添加新页面的 ID。

【问题讨论】:

    标签: jquery mobile


    【解决方案1】:

    我相信它是(除非自从我上次使用 jqm 后他们改变了它)......

    $(document).bind('pageshow', function (e) {
       // ...
    });
    

    【讨论】:

    • 啊... pageshow 看起来像我正在寻找的事件。而第二个参数是一个数组,其中一个元素是(dataUrl(string) 识别页面时要使用的absUrl的过滤版本)。
    • 实际上,这仅在您导航到该页面时才有效。如果直接登陆页面时应该调用它怎么办?
    • 我相信pageshow 会在页面显示时触发。 jQM 的工作方式是一旦页面被查看,一旦它为该会话永久缓存它。如果它再次显示,那就是pageshow 再次被触发的地方。如果您只想在页面第一次显示时运行某些内容,pageinit 应该是您想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多