问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么jquery load加载页面的js代码会失效?有什么好的解决方法?

发布网友 发布时间:2022-04-23 21:24

我来回答

4个回答

懂视网 时间:2022-04-24 01:46

一、问题分析

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

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

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

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

二、load方法详解

1.定义
  $().load(,,);

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

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

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

 2.示例

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

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

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


  • $("#p1").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代码加载到布局页面的<p id="content"></p>中这样每次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"> 
     </head>
    
     <body class="hold-transition skin-blue-light sidebar-mini" onload="onload();">
     <p class="wrapper">
      
      <p id="header">
      
      </p>
      
      <!-- Left side column. contains the logo and sidebar -->
      <p id="sidebar">
      
      </p>
    
      <!-- Content Wrapper. Contains page content -->
      <p id="content" class="content-wrapper clearfix">
      <!-- Content Header (Page header) -->
      
      
      </p>
      <!-- /.content-wrapper -->
    
      <p id="footer">
      
      </p>
      
      <!-- Add the sidebar's background. This p must be placed
     immediately after the control sidebar -->
      <p class="control-sidebar-bg"></p>
    
     </p>
     <!-- ./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">测试</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>

    被加载页面:


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

    效果截图:

    热心网友 时间:2022-04-23 22:54

    load加载表单的提交按钮点击无效


    直接测试该页面,看提交按钮是否有效。

    将你加载表单页面的代码提出来。看是否有问题

    追问直接测试表单页面是正常的,但是用$('#div').load('XXX.php');加载进来后提交按钮就无效了。。百度说js代码是被当做字符串处理的?

    追答你把B页面的js代码放到body标签里面,不要放到head里面。

    热心网友 时间:2022-04-24 00:12

    动态加载的页面事件绑定用live jquer10以上的版本用on

    热心网友 时间:2022-04-24 01:46

    亲,这些是ajax的函数,你是在服务器里面调试的吗?
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 夏日荷花的性格特点 爱的阶梯里陈秋妍是不是丽娜的女儿 一般酷爱荷花的人都具有哪些性格? 爱的阶梯陈秋妍和田心妈妈是什么关系 猫眼电子书txt全集下载 爱的阶梯里的夏丽娜与周建国是什么关系 梅花、荷花、马蹄莲和兰花各具有什么样的个性品格 爱的阶梯为什么没有夏丽娜的扮演者 荷花具有什么样的个性品格 夏丽娜的东北财经大学夏丽娜 夏丽娜的介绍 什么词作能概括荷花的个性 接天莲叶无穷碧,映日荷花别样红,写出了荷花怎样的个性 夏日荷花的性格和特点是什么 荷花的个性是什么 荷花的性格是什么? 为什么荷花又称君子之花他们有什么共性? 请问漫画版的风云,完结了吗? 主角会九霄真经小说 4399长生战道用什么职业最好 爱的阶梯中周建国的亲生女儿是谁 爱的阶梯中陈秋妍和她姐姐怎么不是一个姓 大花布做什么样式的衣服? 商店有50米花布6米花布可以做一套衣服这些花布最多可以做多少套衣服? 一块花布,单做上衣可以做10件,单做裤子可以做15条。这块花布可以做几套这样的衣服 出征索契冬奥会的中国代表团的成员属于什么人种 花布衣服怎么洗才会色泽鲜艳 甘肃鑫海建设监理咨询有限公司酒泉分公司怎么样? 做一套衣服需用布2.4米,现有15.6米花布,可以做几套这样的衣服? 爱的阶梯张浩天何时知道秋研的病情 一块花布6米,做一套衣服用9分米,至多能做几套衣服? 一块花布7米,做一套衣服用9分米,一共可以做几套衣服? 爱的阶梯陈秋妍身世 陈秋妍的生父是谁 用三米的花布可以做六件衣服,六米可以做几件怎么列算式? 请帮忙把“夏丽娜,我永远爱你!--川雄”翻译成阿拉伯文字 一块花布长25米做一套衣服用4米最多做几套衣服? 爱的阶梯中陈秋妍是谁的女儿 autism的缩写是什么 妈妈买来一块花布长23米,做一套衣服用3米,最多能做多少套衣服?求解答? 锦州市元都大酒店有限公司怎么样?