1、問題分析javascript
對於後臺系統,相比你們都有所印象,知道其中的佈局結構,如圖:css
在這種佈局中咱們須要將header,sidebar,footer分開,並且對於中間部分的content內容須要動態變化,即根據不一樣菜單定位到不一樣頁面,而總體佈局不會變化html
這種佈局結構對於單純的HTML不具有這種嵌入各部份內容的能力,因此就須要咱們本身來尋找或者解決這種問題,因爲jquery的兼容性和使用廣度比較不錯,這裏java
使用jquery的load方法來處理這種頁面佈局框架。jquery
2、load方法詳解web
1.定義
$(selector).load(URL,data,callback);
必需的 URL 參數規定您但願加載的 URL。ajax
可選的 data 參數規定與請求一同發送的查詢字符串鍵/值對集合。bootstrap
可選的 callback 參數是 load() 方法完成後所執行的函數名稱。app
2.示例框架
下面的例子把 "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); });
3、佈局框架load的使用
1.問題
網上不少人在使用load方法加載動態頁面的時候遇到一個廣泛的問題,就是在被加載頁面中的JavaScript代碼失效,這是由於load加載的外部文件會把Script部分刪除掉,因此被加載頁面中調用該頁面的JavaScript的時候就會出現xxxfunction未定義。
2.解決
4、代碼示例
佈局頁面:
<!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();"> <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">測試</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">測試</span> <a href="javascript:test();">測試</a> <script> function test(){ alert("測試二頁面"); } </script> <script> function test2(){ alert("ceshi"); } </script> </div>
效果截圖: