2011-08-17 76 views
1

我真的很努力地让我的脑袋围绕jQuery Mobile。我知道DOM插入每个新页面的内容使用AJAX进行缓存。但是,通常我的开发包括在jQuery ready事件中使用JavaScript。在jQuery Mobile中每页运行JavaScript的最佳方法是什么?

作为一个简单的例子,我有一个页面显示的地址,谷歌地图的位置。地图上的指针是通过JavaScript设置的。

当地图显示时,地址显示正确(从MVC控制器拉入),但是我想要JavaScript代码片段运行将邮政编码放在地图上。

现在这是非常简单的东西,但似乎我必须通过箍环来获得这个工作。我已经看到了绑定到pageshow/pagecreate事件的示例,但我希望我的脚本只能在地图页面上运行。 pageshow /创建事件最终在每个页面上触发,而不是我想要的!

所以这真的可以归结为:

  1. 运行JavaScript的一个特定页面上的一个片段被显示。
  2. 动态调用一些JavaScript模型中的邮编。

我该怎么做?我甚至想过尝试Sencha touch来说明它如何管理这件事。

+0

所有的JavaScript必须在初始主页上加载:只需确保数据角色在div =“页” ID与你是在“pagecreate”事件绑定相匹配。示例index.html必须为所有页面的所有javascript,您使用.live()初始化页面jQM控制和javascript – 2011-08-17 13:45:36

回答

0

我想我有我以后的答案。虽然rel =“external”AFAIK强制页面非AJAX加载,因此在头部运行任何脚本,但在后续请求中会丢失该脚本。在jQM发出第一个AJAX请求之后,页面的内容从其内部缓存中拉出,而不运行任何脚本。 我认为JQM网站已经添加描述此行为的页:

http://jquerymobile.com/demos/1.0b2/#/demos/1.0b2/docs/pages/page-scripting.html

正如菲尔如上所述,现场活动可以在主启动页面的JavaScript的使用。

$('#aboutPage').live('pagecreate',function(event){ 
    alert('This page was just enhanced by jQuery Mobile!'); 
}); 
0

最好使用不同的页面,而不是将所有页面嵌入到一个文档中。您也可以在站点的每个页面上使用rel =“external”,以避免使用Ajax。这样,您可以根据需要嵌入jQuery元素,而不是一次加载所有元素。

+0

好的非常感谢您的答案,这是不是意味着性能受到影响,因为页面不被缓存? – jaffa 2011-08-22 18:31:32

相关问题