第一次做用jQuery Mobile做东西,发现一些跟平时的思维习惯不太一样的。其中这个框架的页面加载机制便是其中一个。如果不明白其中的奥秘,往往会出现一些让人摸不着头脑的怪现象,比如页面进入后点击按钮后Javascript就是不执行,而用F5刷新页面后又可以正常执行等。

即使我们明白了HTML文件与jQuery Mobile中page概念的区别,也还是不能解决上述问题。当然,了解这个是一个大前提。原来,jQuery Mobile是用Ajax的方式加载所有HTML中的标记data-role="page"的DIV元素中,第一个HTML页面一般都是完全加载,包括 HEAD BODY 都会被加载到DOM中,完成后便是链接到的其他页面内容的加载。 第二个HTML页面只有 BODY 中的内容会被以Ajax的方式加载到头一个HTML的 DOM中。 并且第二HTML页面的 BODY 中的内容也并非全部加载,而仅仅是其中的第一个带data-role="page"属性的DIV会被加载进去,其余的东西则无缘进入页面渲染。

直接上代码,或许更容易让人明白些:

index.html

<!DOCTYPE html><html lang="en"><head><!-- META TAGS Declaration --><meta charset="UTF-8"><title>TEst</title><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" /><meta name="apple-mobile-web-app-capable" content="yes" /><link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" /><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>              <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>  <script>$(document).on('pagebeforeshow', '#foo', function(){ alert($('#body-test').html());});</script>           </head><body id="body-test"><div data-role="page" id="portfolio"  data-add-back-btn="true">             <div data-role="content" data-theme='c' ><a href="test.html" data-role="button">Go to Bar</a></div></div><!-- Page Project #1 --></body>
</html>

test.html

<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="style/jquery.mobile-1.3.1.css" /><script src="jquery-js/jquery-1.10.1.js"></script><script src="jquery-js/jquery.mobile-1.3.1.js"></script><title>Foobar</title></head><body><div data-role="page" id="foo"><div data-role="content"><a href="#bar" data-role="button">Go to Bar</a></div></div><div data-role="page" id="bar"><div data-role="content"><p>Bar</p></div></div></body>
</html>

参考资料来源:http://stackoverflow.com/questions/17403825/link-fails-to-work-unless-refreshing/17403907#17403907

转载于:https://www.cnblogs.com/pinocchioatbeijing/p/3463857.html

jQuery Mobile中的页面加载与跳转机制相关推荐

  1. jQuery Mobile 手动显示ajax加载器,提示加载中...

    在使用jQuery Mobile开发时,有时候我们需要在请求ajax期间,显示加载提示框(例如:一个旋转图片+一个提示:加载中...).这个时候,我们可以手动显示jQuery Mobile的加载器,大 ...

  2. jquery中的页面加载方法load()

    load方法会在元素的onload事件中绑定一个处理函数,如果处理函数绑定给window对象,则会在所有内容(包括窗口,框架,对象和图片等)加载完毕后触发, 如果处理函数绑定在元素上,则会在元素的内容 ...

  3. vue 点击渲染ajax,vue中在页面加载时发送ajax请求获取数据渲染不到页面上

    ajax是异步执行的. {{bookId}} 在setData里面处理数据 export default { name: 'app', data() { bookId : '' }, created( ...

  4. 页面加载自动跳转功能 比如localhost8080

    一行代码搞定 0为0秒后跳转 url是你要跳转的网址 也可以是自己写的某个页面 <meta http-equiv="refresh" content="0;URL= ...

  5. jQuery的页面加载事件

    window.οnlοad=function(){...}作用是当页面加载的时候可以调用某些函数,例如: window.onload = function() {alert("加载成功&qu ...

  6. jQuery的页面加载完毕事件?

    很多时候我们需要获取元素,但是必须等到该元素被加载完成后才能获取.我们可以把js代码放到该元素的后面,但是这样就会造成js在我们的body中存在不好管理.所有页面加载完毕后所有的元素当然已经加载完毕. ...

  7. html加载状态,js等待页面加载完成

    页面加载完成后等待一段时间在执行js的方法,时间例如方法: function test(){return 1;} 页面加载完毕事件: window.onload = function(){ setTi ...

  8. 打造亚秒级页面加载速度网店实践经验

    美国的创智赢家(Shark Tank),英国的龙穴之创业投资(Dragons' Den),以及德国的"Die Hohle der Lowen (DHDL)"等电视节目为年轻的初创公 ...

  9. 浅谈前端实现页面加载进度条以及 nprogress.js 的实现

    以前在 Vue 的项目用了 nprogress 这个插件,一直对于其如何得知加载进度充满好奇,最近又看到了「前端如何实现页面加载进度条」这个问题,今天周六恰好一探究竟.以下仅为一家之言,如有异议,欢迎 ...

最新文章

  1. 入门系列之使用fail2ban防御SSH服务器的暴力破解攻击
  2. 【盘点】北美顶尖学府的人工智能与智能车实验室
  3. python 操作txt 写入列表
  4. 8_用opencv调用深度学习框架tenorflow、Pytorch、Torch、caffe训练好的模型(20190212)
  5. linq to entity 基础
  6. ssl1341-最小路径覆盖【最大匹配,最小路径覆盖,图论】
  7. 创建外部快照_快照事件:现在如何仅通过拍照即可创建日历事件
  8. Java并发-ThreadLocal
  9. Jdk 和 jre 的 关系和区别
  10. HTTP权威指南记录 ---- 网络爬虫
  11. 产品管理的工作流程是什么
  12. 软件基本功:避免难度写法,代码简单易懂才是高手
  13. (六十五)for循环
  14. 新闻管理系统(增删改查+分页+阅读+发布评论+删除评论+数据库)
  15. 【音乐拼接】mp3格式
  16. ios识别人脸自动拍照_iOS 相机流人脸识别(一)-人脸框检测(基于iOS原生)
  17. 无法定位libjasper-dev
  18. 95后阿里P7晒出工资单:真的是狠狠扎心了...
  19. 计算机的硬件地址在哪看,电脑的MAC地址在哪里查看
  20. 快手发布《2021磁力引擎营销通案》,以信任基因赋能全域营销

热门文章

  1. C# GridView 分页显示
  2. SQL Server补丁版本的检查
  3. 数据库设计--名值模式(转)
  4. CVE-2020-0601漏洞详细分析
  5. CocoaPods管理iOS项目 2018年11月06日
  6. Vue 组件间的传值(通讯)
  7. 《剑指offer》——基础数据结构:从简单知识构建细致扎实的思考和实现能力...
  8. 减小Gcc编译程序的体积
  9. MapReduce on Hbase
  10. 操作数据库(增删改)