全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

使用jQuery的load方法设计动态加载及解决被加载页面js失效问题

一、问题分析

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

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

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

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

二、load方法详解

1.定义

  $(selector).load(URL,data,callback);

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

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

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

 2.示例

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

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

    $("#div1").load("demo_test.txt #p1");

可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。回调函数可以设置不同的

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

三、布局框架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失效的问题。具体代码如下所示:

四、代码示例

布局页面:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title></title>
  <!-- Tell the browser to be responsive to screen width -->
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
  <!-- Bootstrap 3.3.6 -->
  <link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" rel="external nofollow" >
 </head>
 <body class="hold-transition skin-blue-light sidebar-mini" onload="onload();">
  <div class="wrapper">
   <div id="header">
   </div>
   <!-- Left side column. contains the logo and sidebar -->
   <div id="sidebar">
   </div>
   <!-- Content Wrapper. Contains page content -->
   <div id="content" class="content-wrapper clearfix">
    <!-- Content Header (Page header) -->
   </div>
   <!-- /.content-wrapper -->
   <div id="footer">
   </div>
   <!-- Add the sidebar's background. This div must be placed
  immediately after the control sidebar -->
   <div class="control-sidebar-bg"></div>
  </div>
  <!-- ./wrapper -->
  <!-- jQuery 2.2.3 -->
  <script src="../resources/plugins/jQuery/jquery-2.2.3.min.js"></script>
  <!-- Bootstrap 3.3.6 -->
  <script src="../resources/bootstrap/js/bootstrap.min.js"></script>
  <!--左侧菜单-->
  <script src="../resources/dist/js/common/global.js"></script>
  <script src="../resources/dist/js/menu/menuTemplate.js"></script>
  <script src="../resources/dist/js/menu/menu.js"></script>
 </body>
<script>
 //加载页面布局的header,sidebar,footer的内容
 $("#header").load("inc/header.html");
 $("#sidebar").load("inc/sidebar.html");
 $("#footer").load("inc/footer.html");
 /*
 *加载变换内容,主要url参数为dom对象,并且该dom中的url放在href中,
 *调用方式如:<span onclick="javascript:load(this);" href="/backstage/website/test.html" rel="external nofollow" rel="external nofollow" >测试</span>
 *注意:1.该dom对象最好不要用a标签,因为点击a标签会进入href指定的页面
 *  2.要加载的内容要用 id="content" 标注,因为load中指明了加载页面中指定的id为content下的内容
 * 3.对应页面的JavaScript写在content下
 */
 function load(url, data){
  //alert($(url).attr("href"));
  $.ajaxSetup({cache: false });
  $("#content").load($(url).attr("href")+ " #content ", data, function(result){
   //alert(result);
   //将被加载页的JavaScript加载到本页执行
   $result = $(result); 
   $result.find("script").appendTo('#content');
  });
 }
</script>
</html>

被加载页面:

<div id="content">
 <div>测试二</div>
 <span onclick="javascript:load(this);" href="/backstage/website/test.html" rel="external nofollow" rel="external nofollow" >测试</span>
 <a href="javascript:test();" rel="external nofollow" >测试</a>
 <script>
  function test(){
   alert("测试二页面");
  }
 </script>
 <script>
  function test2(){
   alert("ceshi");
  }
 </script>
</div>

效果截图:

以上所述是小编给大家介绍的使用jQuery的load方法设计动态加载及解决被加载页面js失效问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# jquery  # load  # 动态加载  # load加载页面js失效  # javascript重复绑定事件造成的后果说明  # js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法  # AngularJS实现根据变量改变动态加载模板的方法  # JS动态加载脚本并执行回调操作  # javascript实现瀑布流动态加载图片原理  # JS加载器如何动态加载外部js文件  # JavaScript动态加载重复绑定问题  # 加载  # 可选  # 回调  # 将被  # 小编  # 就会  # 完成后  # 放在  # 大家都  # 本页  # 在此  # 很多人  # 给大家  # 在这种  # 要用  # 自定义  # 如图  # 所示  # 会把  # 所要 


相关文章: 如何在腾讯云服务器上快速搭建个人网站?  如何选择最佳自助建站系统?快速指南解析优劣  如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何零基础开发自助建站系统?完整教程解析  临沂网站制作企业,临沂第三中学官方网站?  Swift中swift中的switch 语句  C#如何在一个XML文件中查找并替换文本内容  大同网页,大同瑞慈医院官网?  如何用已有域名快速搭建网站?  广州商城建站系统开发成本与周期如何控制?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  如何高效搭建专业期货交易平台网站?  如何快速搭建FTP站点实现文件共享?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何快速生成橙子建站落地页链接?  做企业网站制作流程,企业网站制作基本流程有哪些?  如何在服务器上配置二级域名建站?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何在阿里云虚拟主机上快速搭建个人网站?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  哈尔滨网站建设策划,哈尔滨电工证查询网站?  北京企业网站设计制作公司,北京铁路集团官方网站?  ,巨量百应是干嘛的?  如何在腾讯云服务器快速搭建个人网站?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  制作公司内部网站有哪些,内网如何建网站?  济南专业网站制作公司,济南信息工程学校怎么样?  如何通过IIS搭建网站并配置访问权限?  如何在阿里云高效完成企业建站全流程?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  建站之星导航菜单设置与功能模块配置全攻略  智能起名网站制作软件有哪些,制作logo的软件?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  寿县云建站:智能SEO优化与多行业模板快速上线指南  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何基于PHP生成高效IDC网络公司建站源码?  如何通过二级域名建站提升品牌影响力?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何在腾讯云免费申请建站?  大连网站制作公司哪家好一点,大连买房网站哪个好?  简单实现Android验证码 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。