一、问题分析

对于后台系统,相比大家都有所印象,知道其中的布局结构,如图:

在这种布局中我们需要将header,sidebar,footer分开,而且对于中间部分的content内容需要动态变化,即根据不同菜单定位到不同页面,而整体布局不会变化

这种布局结构对于单纯的HTML不具备这种嵌入各部分内容的能力,所以就需要我们自己来寻找或者解决这种问题,由于jquery的兼容性和使用广度比较不错,这里

使用jquery的load方法来处理这种页面布局框架。

二、load方法详解

  1. 1.定义
      $(selector).load(URL,data,callback);

  必需的 URL 参数规定您希望加载的 URL。

  可选的 data 参数规定与请求一同发送的查询字符串键/值对集合。

  可选的 callback 参数是 load() 方法完成后所执行的函数名称。

 2.示例

  • 也可以把 jQuery 选择器添加到 URL 参数。

    下面的例子把 "demo_test.txt" 文件中 id="p1" 的元素的内容,加载到指定的 <div> 元素中:

  1. $("#div1").load("demo_test.txt #p1");
  • 可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。回调函数可以设置不同的

  1. $("#div1").load("demo_test.txt",function(responseTxt,statusTxt,xhr){
  2. if(statusTxt=="success")
  3. alert("外部内容加载成功!");
  4. if(statusTxt=="error")
  5. alert("Error: "+xhr.status+": "+xhr.statusText);
  6. });

三、布局框架load的使用

1.问题

  网上很多人在使用load方法加载动态页面的时候遇到一个普遍的问题,就是在被加载页面中的JavaScript代码失效,这是因为load加载的外部文件会把Script部分删除掉,所以被加载页面中调用该页面的JavaScript的时候就会出现xxxfunction未定义。

2.解决

  • 对于header,sidebar,footer这种只包含静态HTML代码的部分直接使用load加载
  • 对应中间content变化的内容,一般都会包含对应的JavaScript代码,使用自定义的load方法(如下代码),在使用jquery.load()方法加载对应的内容的同时,使用load的回调方法处理JavaScript的加载,将被加载页面的JavaScript代码加载到布局页面的<div id="content"></div>中这样每次load()的时候content的内容都会被覆盖,所以也不必担心重复加载的问题。这样就完美解决被加载页面js失效的问题。具体代码如下所示:

四、代码示例

布局页面:

  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <title></title>
  8. <!-- Tell the browser to be responsive to screen width -->
  9. <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
  10. <!-- Bootstrap 3.3.6 -->
  11. <link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css">
  12.  
  13. </head>
  14.  
  15. <body class="hold-transition skin-blue-light sidebar-mini" onload="onload();">
  16. <div class="wrapper">
  17.  
  18. <div id="header">
  19.  
  20. </div>
  21.  
  22. <!-- Left side column. contains the logo and sidebar -->
  23. <div id="sidebar">
  24.  
  25. </div>
  26.  
  27. <!-- Content Wrapper. Contains page content -->
  28. <div id="content" class="content-wrapper clearfix">
  29. <!-- Content Header (Page header) -->
  30.  
  31. </div>
  32. <!-- /.content-wrapper -->
  33.  
  34. <div id="footer">
  35.  
  36. </div>
  37.  
  38. <!-- Add the sidebar's background. This div must be placed
  39. immediately after the control sidebar -->
  40. <div class="control-sidebar-bg"></div>
  41.  
  42. </div>
  43. <!-- ./wrapper -->
  44.  
  45. <!-- jQuery 2.2.3 -->
  46. <script src="../resources/plugins/jQuery/jquery-2.2.3.min.js"></script>
  47. <!-- Bootstrap 3.3.6 -->
  48. <script src="../resources/bootstrap/js/bootstrap.min.js"></script>
  49.  
  50. <!--左侧菜单-->
  51. <script src="../resources/dist/js/common/global.js"></script>
  52. <script src="../resources/dist/js/menu/menuTemplate.js"></script>
  53. <script src="../resources/dist/js/menu/menu.js"></script>
  54. </body>
  55. <script>
  56.  
  57. //加载页面布局的header,sidebar,footer的内容
  58. $("#header").load("inc/header.html");
  59. $("#sidebar").load("inc/sidebar.html");
  60. $("#footer").load("inc/footer.html");
  61.  
  62. /*
  63. *加载变换内容,主要url参数为dom对象,并且该dom中的url放在href中,
  64. *调用方式如:<span onclick="javascript:load(this);" href="/backstage/website/test.html">测试</span>
  65. *注意:1.该dom对象最好不要用a标签,因为点击a标签会进入href指定的页面
  66. * 2.要加载的内容要用 id="content" 标注,因为load中指明了加载页面中指定的id为content下的内容
  67. * 3.对应页面的JavaScript写在content下
  68. */
  69. function load(url, data){
  70. //alert($(url).attr("href"));
  71. $.ajaxSetup({cache: false });
  72. $("#content").load($(url).attr("href")+ " #content ", data, function(result){
  73. //alert(result);
  74. //将被加载页的JavaScript加载到本页执行
  75. $result = $(result);
  76. $result.find("script").appendTo('#content');
  77. });
  78.  
  79. }
  80. </script>
  81. </html>

被加载页面:

  1. <div id="content">
  2. <div>测试二</div>
  3. <span onclick="javascript:load(this);" href="/backstage/website/test.html">测试</span>
  4. <a href="javascript:test();">测试</a>
  5. <script>
  6. function test(){
  7. alert("测试二页面");
  8. }
  9. </script>
  10. <script>
  11. function test2(){
  12. alert("ceshi");
  13. }
  14. </script>
  15. </div>

效果截图:

使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题的更多相关文章

  1. 使用jquery的load方法设计动态加载,并解决浏览器前进、后退、刷新等问题

    继上一篇 使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题 解决了后台业务系统的部分动态加载问题,然而该框架离正常的用户体验还存在一些问题,如:浏览器的前进.后 ...

  2. 在ASP.NET MVC中使用jQuery的Load方法加载静态页面的一个注意点

    使用使用jQuery的Load方法可以加载静态页面,本篇就在ASP.NET MVC下实现. Model先行: public class Article { public int Id { get; s ...

  3. jQuery AJAX load() 方法

    jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法: $(selector). ...

  4. jQuery – AJAX load() 方法

    jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法: $(selector). ...

  5. jquery的load方法

    load方法指定一个界面会显示在目标的标签内部 比如MVC的一个分部视图页面想要显示在某个标签里面,可以写成 $(标签ID).load(分部视图名称,data) 其中第二个参数可选,主要是一些需要传递 ...

  6. jquery动态加载并解决被加载页面js失效问题

    代码布局结构分为 header  left  content html代码如下: <!DOCTYPE html> <html lang="zh-CN"> & ...

  7. 关于jquery的serialize方法转换空格为+号的解决方法

    jquery的 serialize()方法,可以对表单项进行序列化,这本来是很方便的一个功能:但是实际使用中去发现了如下问题:例如:< textarea name="content&q ...

  8. jQuery使用load方法加载其他文档内容

    A文档载入B文档的内容,并且通过JQ操作被引入到A文档中的元素 A文档 (index.html): <!DOCTYPE html> <html lang="en" ...

  9. jQuery 事件 - load() 方法

    例子:$("img").load(function(){ $("div").text("Image loaded"); }); 定义和用法 ...

随机推荐

  1. SQL数据库置疑修复

    SQL数据库置疑修复 首先分析数据库置疑的原因,查明原因分析数据库置疑修复的方法,解决置疑后,考虑数据库置疑的预防方案.   数据库置疑产生的原因: 1.sql所在分区空间是否够?数据库文件大小是否达 ...

  2. Python3基础 使用clear() 清空一个字典

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  3. reg 正则

    //转化为camel形式 var text = 'border-color-base'; text.replace(/-(\w{1})/g, function (match, chr1) { retu ...

  4. pipe管道

    回顾: 进程间通信方式: 信号,管道 消息队列,共享内存,信号量 sokcet 信号: 本质就是软中断 signal(信号,函数指针); void func(int); kill(pid,signo) ...

  5. Angular - - $anchorScroll、$controller、$document

    $anchorScroll 根据HTML5的规则,当调用这个函数时,它检查当前的url的hash值并且滚动到相应的元素. 监听$location.hash()并且滚动到url指定的锚点的地方.可以通过 ...

  6. linux 下 tomcat 之 配置静态资源路径

    1.找到配置文件 找到tomcat\conf\server.xml 2.找到Host 3. 添加 Context <Host name="localhost" appBase ...

  7. 2.6. 类型(Core Data 应用程序实践指南)

    单精度浮点数与双精度浮点数:创建NSManagedObject紫雷师,如果实体中单精度或双精度浮点数类型,那么在子类里,相关特性的类型是NSNumber. 小数:涉及货币时,建议设置为小数(decim ...

  8. PHP图片处理之图片背景、画布操作

    像验证码或根据动态数据生成统计图标,以及前面介绍的一些GD库操作等都属于动态绘制图像.而在web开发中,也会经常去处理服务器中已存在的图片.例如,根据一些需求对图片进行缩放.加水印.裁剪.翻转和旋转等 ...

  9. delphi 获取硬盘序列号、cpu号、bios号、网卡号

    delphi 获取硬盘 序列号 function GetIdeNum: String; type TSrbIoControl = packed record HeaderLength : ULONG; ...

  10. rsync 实验

    参考1:http://www.jb51.net/LINUXjishu/142722.html 参考2:http://sookk8.blog.51cto.com/455855/328076 主服务器IP ...