导航到不同的html页面时,jQueryMobile页面事件不会触发

时间:2011-11-11 15:07:41

标签: jquery-mobile

我正在尝试使用

导航到其他.html页面
$.mobile.changePage( "PlayGame.html", { transition: "slideup"}, true, true)

PlayGame.html正在转换为,但以下都没有解雇:

$(document).bind("mobileinit", function()
{
alert(1);
});

$('#gamePage').live('pageinit',function(event, ui)
{
    alert('pageinit');  
});

$('#gamePage').live('pagebeforeshow',function(event, ui)
{
    alert('booooo');
});

但是,如果我window.location.href = "PlayGame.html",那么所有内容都会相应发生。

我错过了什么?

由于

汤姆

1 个答案:

答案 0 :(得分:20)

如果您的示例中的代码位于<head>文档的PlayGame.html中,那么当jQuery Mobile框架通过AJAX抓取页面时,它将不会包含在内。这就是为什么您的自定义代码在加载整个页面时运行,而不是在单击其他页面的链接时运行。

您需要将自定义JavaScript放在一个文件中并将其包含在每个页面上(因此无论用户从哪个页面进入您的网站,它都可用)或者您希望为每个页面移动自定义JavaScript页面到每个页面的<div data-role="page">元素(因此当页面被拉入DOM时它将被包含在内)。

原因是,当您单击指向外部文件的链接时,jQuery Mobile使用AJAX提取<div data-role="page">元素的第一个实例,并将该元素放在当前DOM中,文档中的其他所有内容被丢弃了。

以下是有关jQuery Mobile导航如何工作的一些建议阅读:http://jquerymobile.com/demos/1.0rc2/docs/pages/page-navmodel.html