jquery mobile转场时加载js失效
jquery mobile拦截了所有的http请求,并使用ajax请求取代传统的http。请求发出后,框架会将请求的内容插入到页面中data- role="page"的部分,取代原来的内容。因而如果请求的新页面在head部分加载了其他的js,此时框架并不会加载该部分的js。
这就意味着head部分的js和css在绝大部分情况下并不会被加载并执行,通常情况下建议所有页面使用一套统一的js和css。但如果应用的复杂度较高或者为分工合作开发时,我们需要根据不同的页面加载不同的js或样式,这时候可以使用jquery mobile提供的pagecreate方法解决该问题。
我们知道在使用jquery框架时,我们习惯使用
$(document).ready(function(){
// do something
})
但这个方法在jquery mobile中,因为jquery mobile特殊的请求机制(ajax请求),很多时候并不能达到我们希望的功能。jquery mobile提供了pagecreate的事件。
下面我们可以通过一个简单的例子,使用pagecreate实现不同page加载不同js的功能:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>demo</title>
</head>
<body>
<div data-role="page" id="pageOne">
<div data-role="header">
<h1>page one header</h1>
</div>
<div data-role="content">
<p>page one content</p>
<a href="#pageTwo">page two</a>
</div>
<div data-role="footer">
<p>page one footer</p>
</div>
</div><!-- /pageOne -->
<div data-role="page" id="pageTwo">
<div data-role="header">
<a data-rel="back">back</a>
<h1>page two header</h1>
</div>
<div data-role="content">
<p>page two content</p>
</div>
<div data-role="footer">
<p>page two footer</p>
</div>
</div><!-- /pageTwo -->
<script>
$(document).on("pagecreate", "#pageOne", function(){
alert("page one create");
});
$(document).on("pagecreate", "#pageTwo", function(){
alert("page two create");
});
</script>
</body>
</html>
这样,页面在一开始渲染时,只会执行 alert("page one create"); 当a标签跳转到pageTwo时才会执行:alert("page two create");
当然还有其他解决方法,比如在a标签上加上如:data-ajax='false',rel='external',只是这样做的话转场效果会失效。
而如果使用上面我介绍的这种方法的话,JS失效也可以解决,转场也可以。
如果大家有更好的解决方法,欢迎提出,互相学习。
jquery mobile转场时加载js失效的更多相关文章
- jquery mobile转场时加载js失效(转)
jquery mobile拦截了所有的http请求,并使用ajax请求取代传统的http.请求发出后,框架会将请求的内容插入到页面中data- role="page"的部分,取代原 ...
- [转]jquery的ajax交付时“加载中”提示的处理方法
本文转自:http://www.educity.cn/wenda/77121.html jquery的ajax提交时“加载中”提示的处理方法 方法1:使用ajaxStart方法定义一个全局的“加 ...
- jQuery Mobile 手动显示ajax加载器,提示加载中...
在使用jQuery Mobile开发时,有时候我们需要在请求ajax期间,显示加载提示框(例如:一个旋转图片+一个提示:加载中...).这个时候,我们可以手动显示jQuery Mobile的加载器,大 ...
- jQuery Mobile 手动显示ajax加载器
在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更 ...
- jquery Mobile点击显示加载等待效果
点击某个按钮或链接时,触发等待加载效果: <script> <!-- $(document).bind("mobileinit", function(){ }); ...
- jQuery Mobile中的页面加载与跳转机制
第一次做用jQuery Mobile做东西,发现一些跟平时的思维习惯不太一样的.其中这个框架的页面加载机制便是其中一个.如果不明白其中的奥秘,往往会出现一些让人摸不着头脑的怪现象,比如页面进入后点击按 ...
- jquery的ajax提交时“加载中”提示的处理方法
方法1:使用ajaxStart方法定义一个全局的“加载中...”提示 $(function(){ $("#loading").ajaxStart(function(){ ...
- jquery的ajax提交时加载处理方法
1.定义全局的,就是所有的ajax的请求的加载都会出现相同的提示 $(function(){ //加载成功显示的状态 $("#showLoading").ajaxSuccess(f ...
- JQuery/JS插件 jsTree加载树,预先加载,初始化时加载前三级节点,当展开第三级节点时 就加载该节点下的所有子节点
jsTree加载树, 初始化时 加载前三级节点, 当展开第三级节点时 就加载该节点下的所有子节点 html: <!DOCTYPE html> <html> <head&g ...
随机推荐
- python之7-3对象的信息/方法获取
我们可以用dir()来获取一个类,一个模块,一个字符串的信息/方法 例如: #可以列出Image模块的方法 >>import Image >>dir(Image) #列出字符串 ...
- java实现双向链表
PS:双向链表(每个节点含有指向前一个节点的前驱与后一个节点的后继) public class DoublyLinkedList { static class Node { private Objec ...
- word2vec的艰难成长史
1.首先在网站上面下载gensim,我是在11服务器上面下载的 2.使用winpython打开 3.在command windows 下使用pip install gensim这句话进行,原先使用这句 ...
- cpm效果介绍
浮层菜单 图片弹窗
- Android Activity 生命周期的透彻理解
说来惭愧,虽然已经做了一年多的android开发,但是最近被人问起activity的生命周期的时候,却感觉自己并不能很自信很确定的回答对方的问题,对activity的生命周期的理解还不透彻啊. ...
- 通过JCONSOLE监控TOMCAT的JVM使用情况
这个也是要学入一下,JVMr 虚拟机原理不可少. 参考配置URL“: http://blog.163.com/kangle0925@126/blog/static/277581982011527723 ...
- CentOs6.5中安装和配置vsftp简明
这篇文章主要介绍了CentOs6.5中安装和配置vsftp简明教程,需要的朋友可以参考下 一.vsftp安装篇 复制代码代码如下: # 安装vsftpdyum -y install vsftp ...
- wikioi1082【线段树练习 3 】
题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数n,接下 ...
- Codeforce 220 div2
D 插入: 在当前指针位置sz处插入一个1,col[sz]记录插入的内容,sz++; 删除i: 找到第i个1的位置,赋为0; 于是转化为一个维护区间和的问题; trick: 如果是依次删除a[0],a ...
- 深入了解Json转变为map的思想,附源代码2
最近在做一个投票情况的用例,返回的结果打算放到JSON中 数据库的结果集如上图所示:optionkey代表选项,optionval代表其值 第一次做的时候考虑应该键值对应的关系,所以前台接到的json ...