一. 用iframe方法实现点击左边, 右边出现相应的页面。

我做一个后台, 而且他指出别人没有用iframe, 问我行不行。 只能说行。 没有在网上查看过多的资料, 某天晚上突然想起ajax 里面有一个load方法, 这个方法可以载入其他页面的内容。 于是有了灵感, 开始也只是尝试一下:

<ul class="nav" id="side-menu"><li><a href="index.html" id="firstNode" class="cur" target="menuFrame"><i class="fa fa-bar-chart-o fa-fw"></i><b>统计报表</b></a><ul class="nav nav-second-level"><li><a href="import.html" target="menuFrame">进货报表</a></li><li><a href="export.html" target="menuFrame">出货报表</a></li><li><a href="check.html" target="menuFrame">毛利报表</a></li></ul></li><li><a href="warehouse.html" target="menuFrame"><i class="fa fa-table fa-fw"></i><b>仓库管理</b></a><ul class="nav nav-second-level"><li><a href="goodslist.html" target="menuFrame">商品列表</a></li><li><a href="check.html" target="menuFrame">盘点</a></li><li><a href="outbound.html" target="menuFrame">出库列表</a></li><li><a href="instorage.html" target="menuFrame">入库列表</a></li></ul></li><li><a href="#"><i class="fa fa-edit fa-fw"></i><b>订单管理</b></a><ul class="nav nav-second-level"><li><a href="orderlist.html" target="menuFrame">订单列表</a></li><li><a href="forms.html" target="menuFrame">采购申请</a></li></ul></li><li><a href="system.html" target="menuFrame"><i class="fa fa-wrench fa-fw"></i><b>系统设置</b></a><ul class="nav nav-second-level"><li><a href="user.html" target="menuFrame">权限设置</a></li><li><a href="personnel.html" target="menuFrame">资料管理</a></li></ul></li><li><a href="rewritepwd.html" target="menuFrame"><i class="glyphicon glyphicon-pencil"></i><b>修改密码</b></a></li></ul>

  先写出一个上菜的菜单。 千万记住链接后面的target得要,而且名字需要一样,等会会用到

 <div id="page_content"><iframe id="menuFrame" name="menuFrame" src="index.html" style="overflow:visible;" scrolling="yes" frameborder="no" width="100%" height="100%; float:left"></iframe></div>

  在内容的区域添加上面代码,插入iframe, 这里的name对应上面链接里面的name, src="index.html", 表示默认页是index.html, 至于后面的那些属性是控制iframe样式的。 以上iframe就告一段落了。

二. 用ajax方法实现点击左边, 右边出现相应的页面。

("li").on('click', function() {var href = $(this).find("a").attr('href');$('#mainContents').empty();$('#mainContents').load("../new/" + href);//阻止跳转$(this).parents('li').addClass('active').siblings('li').removeClass('active');return false;});

  点击li, 找到li里面对应的链接地址,阻止url跳转,然后在内同区域载入找到的url对应的地址。 惊奇的发现,试验了也可行。 然而新问题来了。 用load方法,只能载入已经加载完毕的页面,如果我们的页面没有加载完毕呢, 或者修改了, 怎么办?? 所以还是用ajax 吧。

var menu = $("#menuID>li h2"),srcLi = menu.next('ul').find('li');srcLi.on('click', function(e) {var href = $(this).find("a").attr('href');$('#mainContents').empty();$.ajax({//  beforeSend: function(){//      $('#mainContents').html('正在请求');//  },// complete: function(){//      $('#mainContents').html('加载完毕');//     },type: "GET",url: "../new/" + href,success: function(data) {$('#mainContents').append(data);}});//阻止跳转$(this).parents('li').addClass('active').siblings('li').removeClass('active');return false;});menu.on('click', function() {$(this).next('ul').slideToggle(400);$(this).stop('false').toggleClass('on');});

  以上的思路, 和开始时候的load方法一样。首先找到每一个li 里面对应的url, 然后清空 右侧的内容, 用ajax动态获取不同的页面, 就追加到右侧的内容中。 阻止跳转。

另外,附上一个相似的代码,这是点击一个树状菜单出来不同的内容。第一次用ajax调用json数据。着实小兴奋了一把。这个与上面说的内容一毛钱的关系也没有,只是为了祭奠一下我的第一次而已

$.ajax({type: "post",url: "../new/txt/txt1.json",dataType: "json",success: function(data) {$("#blank").empty();var employees = data.employees;$.each(data.employees, function(k, v) {                         var tpl1 ='<div class="halfLeft">' + '<span class="aboutJobs">' + v.职位 + '</span>: ' + '<span class="aboutNames">' + v.姓名 + '</span>;<br/>' + '</div>';$("#blank").append(tpl1);});}
})

调用的json数据为

{"employees": [{ "姓名": "张三", "职位":"php后台", "email": "aaaa" },{ "姓名": "李四", "职位":"人事经理", "email": "bbbb" },{ "姓名": "王五", "职位":"Harold", "email": "cccc" },{ "姓名": "Isaac", "职位": "Asimov", "genre": "science fiction" },{ "姓名": "Tad", "职位": "Williams", "genre": "fantasy" },{ "姓名": "Frank", "职位": "Peretti", "genre": "christian fiction" },{ "姓名": "Eric", "职位": "Clapton", "instrument": "guitar" },{ "姓名": "Sergei", "职位": "Rachmaninoff", "instrument": "piano" }],"test": [{ "姓名": "赵六", "职位":"php后台", "email": "aaaa" },{ "姓名": "齐七", "职位":"人事经理", "email": "bbbb" },{ "姓名": "王五", "职位":"Harold", "email": "cccc" },{ "姓名": "Isaac", "职位": "Asimov", "genre": "science fiction" },{ "姓名": "Tad", "职位": "Williams", "genre": "fantasy" },{ "姓名": "Frank", "职位": "Peretti", "genre": "christian fiction" },{ "姓名": "Eric", "职位": "Clapton", "instrument": "guitar" },{ "姓名": "Sergei", "职位": "Rachmaninoff", "instrument": "piano" }]
}

整个演示用的示例程序包含默认页面(index.jsp),用户列表页(userList.jsp),产品列表页(productList.jsp),订单管理页(recordList.jsp)

使用了 Bootstrap 框架和 FontAwesome 的图标(没办法,bootstrap自带的图标太少了o(╯□╰)o),这俩货的使用方法请参见官网,都比较简单

先来看看index.jsp的代码吧,我基本都详细注释了:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge">   <%-- 在IE运行最新的渲染模式 --%><meta name="viewport" content="width=device-width, initial-scale=1">   <%-- 初始化移动浏览显示 --%><meta name="Author" content="Dreamer-1."><!-- 引入各种CSS样式表 --><link rel="stylesheet" href="css/bootstrap.css"><link rel="stylesheet" href="css/font-awesome.css"><link rel="stylesheet" href="css/index.css">    <!-- 修改自Bootstrap官方Demon,你可以按自己的喜好制定CSS样式 --><link rel="stylesheet" href="css/font-change.css">    <!-- 将默认字体从宋体换成微软雅黑(个人比较喜欢微软雅黑,移动端和桌面端显示效果比较接近) -->        <script type="text/javascript" src="js/jquery-1.12.3.min.js"></script><script type="text/javascript" src="js/bootstrap.min.js"></script><title>- 后台管理系统 -</title></head><body><!-- 顶部菜单(来自bootstrap官方Demon)==================================== --><nav class="navbar navbar-inverse navbar-fixed-top"><div class="container"><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" ><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="index.jsp">XXXX.com</a></div><div id="navbar" class="navbar-collapse collapse"><ul class="nav navbar-nav navbar-right">                        <li><a href="###" οnclick="showAtRight('userList.jsp')"><i class="fa fa-users"></i> 用户列表</a></li>    <li><a href="###" οnclick="showAtRight('productList.jsp')"><i class="fa fa-list-alt"></i> 产品列表</a></li><li><a href="###" οnclick="showAtRight('recordList.jsp')" ><i class="fa fa-list"></i> 订单列表</a></li>    </ul></div></div></nav><!-- 左侧菜单选项========================================= --><div class="container-fluid"><div class="row-fluie"><div class="col-sm-3 col-md-2 sidebar">        <ul class="nav nav-sidebar"><!-- 一级菜单 --><li class="active"><a href="#userMeun" class="nav-header menu-first collapsed" data-toggle="collapse"><i class="fa fa-user"></i>  用户管理 <span class="sr-only">(current)</span></a></li> <!-- 二级菜单 --><!-- 注意一级菜单中<a>标签内的href="#……"里面的内容要与二级菜单中<ul>标签内的id="……"里面的内容一致 --><ul id="userMeun" class="nav nav-list collapse menu-second"><li><a href="###" οnclick="showAtRight('userList.jsp')"><i class="fa fa-users"></i> 用户列表</a></li></ul><li><a href="#productMeun" class="nav-header menu-first collapsed" data-toggle="collapse"><i class="fa fa-globe"></i>  产品管理 <span class="sr-only">(current)</span></a></li> <ul id="productMeun" class="nav nav-list collapse menu-second"><li><a href="###" οnclick="showAtRight('productList.jsp')"><i class="fa fa-list-alt"></i> 产品列表</a></li></ul><li><a href="#recordMeun" class="nav-header menu-first collapsed" data-toggle="collapse"><i class="fa fa-file-text"></i>  订单管理 <span class="sr-only">(current)</span></a></li> <ul id="recordMeun" class="nav nav-list collapse menu-second"><li><a href="###" οnclick="showAtRight('recordList.jsp')" ><i class="fa fa-list"></i> 订单列表</a></li></ul></ul></div></div></div><!-- 右侧内容展示==================================================   -->           <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main"><h1 class="page-header"><i class="fa fa-cog fa-spin"></i> 控制台<small>   欢迎使用XXX后台管理系统</small></h1><!-- 载入左侧菜单指向的jsp(或html等)页面内容 --><div id="content"><h4>                    <strong>使用指南:</strong><br><br><br>默认页面内容……</h4>                                 </div>  </div> <script type="text/javascript">/** 对选中的标签激活active状态,对先前处于active状态但之后未被选中的标签取消active* (实现左侧菜单中的标签点击后变色的效果)*/$(document).ready(function () {$('ul.nav > li').click(function (e) {//e.preventDefault();    加上这句则导航的<a>标签会失效$('ul.nav > li').removeClass('active');$(this).addClass('active');});});/** 解决ajax返回的页面中含有javascript的办法:* 把xmlHttp.responseText中的脚本都抽取出来,不管AJAX加载的HTML包含多少个脚本块,我们对找出来的脚本块都调用eval方法执行它即可*/function executeScript(html){var reg = /<script[^>]*>([^\x00]+)$/i;//对整段HTML片段按<\/script>拆分var htmlBlock = html.split("<\/script>");for (var i in htmlBlock) {var blocks;//匹配正则表达式的内容数组,blocks[1]就是真正的一段脚本内容,因为前面reg定义我们用了括号进行了捕获分组if (blocks = htmlBlock[i].match(reg)) {//清除可能存在的注释标记,对于注释结尾-->可以忽略处理,eval一样能正常工作var code = blocks[1].replace(/<!--/, '');try {eval(code) //执行脚本} catch (e) {}}}}/** 利用div实现左边点击右边显示的效果(以id="content"的div进行内容展示)* 注意:*   ①:js获取网页的地址,是根据当前网页来相对获取的,不会识别根目录;*   ②:如果右边加载的内容显示页里面有css,必须放在主页(即例中的index.jsp)才起作用*   (如果单纯的两个页面之间include,子页面的css和js在子页面是可以执行的。 主页面也可以调用子页面的js。但这时要考虑页面中js和渲染的先后顺序 )*/function showAtRight(url) {var xmlHttp;if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, SafarixmlHttp=new XMLHttpRequest();    //创建 XMLHttpRequest对象}else {// code for IE6, IE5xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}xmlHttp.onreadystatechange=function() {        //onreadystatechange — 当readystate变化时调用后面的方法if (xmlHttp.readyState == 4) {//xmlHttp.readyState == 4    ——    finished downloading responseif (xmlHttp.status == 200) {//xmlHttp.status == 200        ——    服务器反馈正常            document.getElementById("content").innerHTML=xmlHttp.responseText;    //重设页面中id="content"的div里的内容executeScript(xmlHttp.responseText);    //执行从服务器返回的页面内容里包含的JavaScript函数}//错误状态处理else if (xmlHttp.status == 404){alert("出错了☹   (错误代码:404 Not Found),……!"); /* 对404的处理 */return;}else if (xmlHttp.status == 403) {  alert("出错了☹   (错误代码:403 Forbidden),……"); /* 对403的处理  */ return;}else {alert("出错了☹   (错误代码:" + request.status + "),……"); /* 对出现了其他错误代码所示错误的处理   */return;}   } }//把请求发送到服务器上的指定文件(url指向的文件)进行处理xmlHttp.open("GET", url, true);        //true表示异步处理xmlHttp.send();}        </script></body>
</html>

注意:

如果FontAwesomt的图标没有正确显示出来,那很可能是 font-awesome.css内的字体文件地址出错

注意检查右边红框内的url是否对应左边红框内fonts-awesome文件的路径

userList.jsp页面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><div>我是用户列表 (っ´Ι`)っ</div>
</body>
</html>

productList.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><div>我是产品列表 ╰( ̄▽ ̄)╭</div>
</body>
</html>

recordList.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><div>我是订单列表 <( ̄ˇ ̄)/</div>
</body>
</html>

这三个只是简单的演示页,就不多费笔墨了

【JQuery】JQuery+JS实现点击左边, 右边出现相应的页面相关推荐

  1. js 点击侧边栏展示内容_左边菜单,点击左边右边内容改变

    统计报表 进货报表 出货报表 毛利报表 仓库管理 商品列表 盘点 出库列表 入库列表 订单管理 订单列表 采购申请 系统设置 权限设置 资料管理 修改密码 先写出一个上菜的菜单. 千万记住链接后面的t ...

  2. 左边菜单,点击左边右边内容改变

    作为新手, 拿到真的很棘手. 很多人想到的是用iframe, 其实我的第一感也是, 但是好像iframe正在被淘汰,  所以一直在寻找新方法.. 当然, 我还是先把iframe方法贴出来, 这个方法是 ...

  3. JS实现点击左边标题栏,右边显示对应信息

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  4. 用js实现点击链接跳转APP对应页面

    这不是一篇严格意义上的原创,参考了很多大佬的文章, 下面根据自己的情况做了一下整理. 近两天,接到公司的需求----点击 H5 的购买按钮,跳转到 APP 对应的页面.啊! 一脸懵! 还等啥,赶紧查资 ...

  5. node.js Lordofpomelo点击登录(login)终端提示成功,页面不跳转无反应

    firbug查看是因为webserver->public->js->lib->build->build.js文件出错 打开https://raw.githubuserco ...

  6. html中点击左边菜单右边内容切换

    左边菜单,点击左边右边内容改变 作为新手, 拿到真的很棘手. 很多人想到的是用iframe, 其实我的第一感也是, 但是好像iframe正在被淘汰,  所以一直在寻找新方法.. 当然, 我还是先把if ...

  7. 导入Jquery.min.js时 JQuery 上打红X了

    问题解决:右击jquery.min.js-->MyEclipse-->点击Exclude From Validation-->点击Run Validation 即可 转载于:http ...

  8. html响应式布局平移,jQuery图片内部缩放和平移插件jquery.zoom.js

    插件描述:jquery.zoom.js是一款非常实用的图片内部缩放和平移jQuery插件.该插件可以鼠标滑过图片,点击图片或移动手机上触摸图片时,将图片进行放大或平移操作. 简要教程 jquery.z ...

  9. BootStrap使用方法为BootStrap3添加jquery.min.js文件(简单易懂)_☆往事随風☆的博客

    为BootStrap3添加jquery.min.js文件 一.前言 二.BootStrap简介 三.BootStrap3的使用方法 (1)先去官网找到BootStrap3这个版本的文档. (2)配置B ...

最新文章

  1. MyBatis架构分层
  2. DonkeyID---php扩展-64位自增ID生成器
  3. ifstat 命令查看linux网络I/O情况
  4. RichViewEdit的技巧收集
  5. Liunx 重新mount
  6. Mongodb基本操作说明
  7. 【iVX 初级工程师培训教程 10篇文拿证】07 08 新闻页制作
  8. python 教学_「Python基础」一次就装好Python手把手装到好
  9. (超简单)Nginx状态统计模块
  10. mysql递归查询树,帮你突破瓶颈
  11. java每个月某天,java – 查找一年中的某一天
  12. wuzhicms 查看模板中的所有可用变量和值
  13. 韩顺平 jdbc 之 mysql,(韩顺平讲解)jdbc学习(四)---java连接mysql
  14. 深入.NET编程 第十一章 影院售票系统
  15. 动态数据源,帆软报表同一个sql语句,根据不同的角色使用不同的连接
  16. 数字电子钟—VHDL 设计
  17. 英语四级和计算机一级算多少学分,英语四级成绩怎么算分 多少分合格
  18. Vue 项目处理每次发版后要清理浏览器缓存
  19. 通过身份证号得到年龄、性别和出生日期
  20. etcd之日志和快照管理

热门文章

  1. Simply Static Pro - 简单静态专业版 v1.2.1
  2. python PySide6 图书管理系统结合数据库实战教程之登录-注册界面(保姆级教程)(后续更新)
  3. 帝国cms ngix后php打不开,帝国cms伪静态设置方法
  4. 200 行代码实现一个简单的区块链
  5. 互联网大佬杨浩涌的创业历程,尽管遭遇合并但依旧辉煌
  6. 程序员必修课-sql语句
  7. html车牌输入框,车牌号码输入框——Label的inputView
  8. C++使用Sqlite
  9. 听见丨阿里“双十一”成交总额1682亿 京东双十一累计下单金额1271亿
  10. python数据爬取及数据可视化分析