在 jQuery Mobile 中更改页面时,不会在第二页上调用任何事件处理程序



我在应用程序中使用 jQuery Mobile。我有和索引.html页面,我尝试向我的应用程序添加另一个页面。因此,在 index.html 页面上,我有一个指向 Camera.html 页面的链接:

<a href="Camera.html">Take a photo</a>   // A. version

当我单击链接时,相机的页面会向内滑动(它会重定向到带有滑动动画的 Camera.html 页面),但在相机页面上没有调用任何事件处理程序(加载、DOMContentLoaded 等)。我认为jQuery Mobile使用ajax重定向到其他页面,这就是为什么不调用事件处理程序的原因。

如果我将其更改为以下内容,则会调用事件,但不会对页面重定向进行动画处理:

<a href="Camera.html" data-ajax="false">Take a photo</a>   // B. version

我想保留动画,我也希望在相机页面上调用一些事件(我想使用它进行初始化)。所以我有以下问题。

  1. 您是否知道至少一个事件,如果我使用 A. 版本重定向到其他页面,则会调用该事件?
  2. 如果我使用版本 A.,我可以以某种方式手动调用另一个页面上的某个事件吗?
  3. 我应该以其他方式重定向到另一个页面吗?

你能给我一些代码示例吗?

我想保留动画,我也希望在相机页面上>调用某个事件(我想使用它进行初始化)。所以我有以下问题。

尝试使用它来使用 pageinitpageshow 初始化您的页面

jQuery('[data-role="page"]').live('pageinit', function(){
  /* page initialization */
})

pageinit 被触发一次 - 当在 DOM 中创建页面时,每次显示页面时都会触发 pageshow

请澄清一下,当你的意思是它向内滑动时,你是否在屏幕上对div标签进行了动画处理?

如果页面重定向到 Camera.html,那么如果您将脚本包含在 Camera.html 的脚本标记中,则它们只会在 Camera.html 加载时执行

另外尝试:

  • 如果要对div 标签进行动画处理,请使用 $('div').load() 事件
  • 尝试添加

    $('body id="camerabody"').load(function(){ alert("Body Loaded"); })
    

其中相机主体是相机.html文件中正文标签的 ID

  • 如果使用 jquery.animate 生成动画,则可以在动画完成时指定回调

    $('div').animate(
             {height:'+=50'},
             1000,
             function(){ alert("animation complete"); 
    });
    

最新更新