Jquery mobile 在jQuery Mobile中,每页运行JavaScript的最佳方法是什么?

Jquery mobile 在jQuery Mobile中,每页运行JavaScript的最佳方法是什么?,jquery-mobile,Jquery Mobile,我真的很难理解jQuery Mobile。我知道为了缓存的目的,使用AJAX将DOM与每个新页面的内容一起插入。但是,通常我的开发包括在jQuery就绪事件中使用JavaScript 作为一个简单的例子,我有一个显示地址的页面,还有一个位置的谷歌地图。地图上的指针是通过JavaScript设置的 当地图显示时,地址显示为从MVC控制器正确拉入的地址,但我希望运行JavaScript片段,将邮政编码放在地图上 这是很简单的事情,但我似乎必须克服重重困难才能让它发挥作用。我见过绑定到pageshow

我真的很难理解jQuery Mobile。我知道为了缓存的目的,使用AJAX将DOM与每个新页面的内容一起插入。但是,通常我的开发包括在jQuery就绪事件中使用JavaScript

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

当地图显示时,地址显示为从MVC控制器正确拉入的地址,但我希望运行JavaScript片段,将邮政编码放在地图上

这是很简单的事情,但我似乎必须克服重重困难才能让它发挥作用。我见过绑定到pageshow/pagecreate事件的示例,但我希望我的脚本只在地图页面上运行。pageshow/create事件最终会在每个页面上触发,而不是我想要的

因此,这实际上归结为:

在显示的特定页面上运行JavaScript片段。 使用模型中的邮政编码动态调用某些JavaScript。
我该怎么做?我甚至想过尝试Sencha touch来说明如何管理它。

最好使用不同的页面,而不是将所有页面嵌入到一个文档中。您还可以在站点内的每个页面上使用rel=external,这样就不会使用Ajax。通过这种方式,您可以根据需要嵌入jQuery元素,而不是一次加载所有元素。

我想我找到了我想要的答案。尽管rel=external AFAIK强制对页面进行非AJAX加载,因此在head部分中运行任何脚本,但在后续请求中都会忽略这一点。在jQM发出第一个AJAX请求之后,页面的内容将从其内部缓存中拉入,而不运行任何脚本。 我认为jQM站点添加了一个页面来描述这种行为:

如上所述,live事件可以在主启动页面的JavaScript中使用。只需确保data role=page id的div与“pagecreate”事件绑定到的内容匹配即可:

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

所有javascript都必须加载到初始主页上。Example index.html必须保存所有页面的所有javascript,您可以使用.live来初始化该页面jQM控件和javascriptok非常感谢您的回答,这不意味着由于页面未缓存,性能会受到影响吗?