ajax多级菜单栏
1.jsp
首先ajax查询数据
<script type="text/javascript">
function targetlist()
{
$.ajax({
url:'targetlist.action?'+Math.random(),
type:'POST', //GET
async:true, //或false,是否异步
//data://提交表单数据
timeout:5000, //超时时间
dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/text
beforeSend:function(xhr){
console.log(xhr);
console.log('发送前');
},
success:function(data,textStatus,jqXHR){
console.log(data);
for(var i=0;i<data.length;i++){
$(".banner_menu_content li").append('<a href="Target.action" target="main"></a>'); //添加a标签
$(".banner_menu_content li a").eq(i).text("培养目标"+data[i].id.targetnumber);
console.log(i);
} $(".banner_menu_content").css("height",10+30*data.length);//设定div的高度
for(var i=$(".banner_menu_content li a").length;i>=data.length;i--){
$(".banner_menu_content li a").eq(i).remove();//删除多余a标签
}
console.log(textStatus);
},
error:function(xhr,textStatus){
console.log('错误');
console.log(xhr);
console.log(textStatus);
},
complete:function(){
console.log('结束');
$(".banner_menu_content li a").hover(function(){
var aa=$(this).text().trim();
setTimeout(function(){
//alert(aa);
requirementlist(aa.substring(aa.length-1,aa.length));
//这里触发hover事件
},500);
},function(){ });
}
});
} function requirementlist(number)
{
$.ajax({
url:'requirementlist.action?'+Math.random(),
type:'POST', //GET
async:true, //或false,是否异步
data:{number:number},
timeout:5000, //超时时间
dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/text
beforeSend:function(xhr){
console.log(xhr);
console.log('发送前');
},
success:function(data,textStatus,jqXHR){
console.log(data);
for(var i=0;i<data.length;i++){
$(".banner_menu_content1 li").append('<a href="" target="main"></a>');
$(".banner_menu_content1 li a").eq(i).text("毕业要求"+data[i].id.requirementnumber);
console.log(i);
}
$(".banner_menu_content1").css("height",10+30*data.length);
for(var i=$(".banner_menu_content1 li a").length;i>=data.length;i--){
$(".banner_menu_content1 li a").eq(i).remove();
}
console.log(textStatus);
},
error:function(xhr,textStatus){
console.log('错误');
console.log(xhr);
console.log(textStatus);
},
complete:function(){
console.log('结束');
$(".banner_menu_content1 li a").hover(function(){
var aa=$(this).text().trim();
setTimeout(function(){
pointlist(aa.substring(aa.length-2,aa.length));
//这里触发hover事件
},500);
},function(){ });
}
});
} function pointlist(number)
{
$.ajax({
url:'pointlist.action?'+Math.random(),
type:'POST', //GET
async:true, //或false,是否异步
data:{number:number},
timeout:5000, //超时时间
dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/text
beforeSend:function(xhr){
console.log(xhr);
console.log('发送前');
},
success:function(data,textStatus,jqXHR){
console.log(data);
for(var i=0;i<data.length;i++){
$(".banner_menu_content2 li").append('<a href="" target="main"></a>');
$(".banner_menu_content2 li a").eq(i).text("指标点"+data[i].id.pointnumber);
console.log(i);
}
$(".banner_menu_content2").css("height",10+30*data.length);
for(var i=$(".banner_menu_content2 li a").length;i>=data.length;i--){
$(".banner_menu_content2 li a").eq(i).remove();
}
console.log(textStatus);
},
error:function(xhr,textStatus){
console.log('错误');
console.log(xhr);
console.log(textStatus);
},
complete:function(){
console.log('结束');
}
});
}
</script>
然后设定三个div
<li class="nLi on">
<h3>培养过程制定</h3>
<ul class="sub">
<li id="banner_menu_wrap">
<div class="banner_menu_content" style="position:absolute;z-index: 1;left:15%;width:10%;;">
<ul class="sub">
<li>
</li>
</ul>
</div>
<div class="banner_menu_content1" style="position:absolute;z-index: 1;left:25%;width:10%;;">
<ul class="sub">
<li>
</li>
</ul>
</div>
<div class="banner_menu_content2" style="position:absolute;z-index: 1;left:35%;width:10%;;">
<ul class="sub">
<li>
</li>
</ul>
</div> <a href="Target.action"target="main">培养目标制定</a>
</li>
<li><a href="Requirement.action" target="main">毕业要求制定</a></li>
<li><a href="Termcourse.action?termcoursenumber=1" target="main">教学环节制定</a></li>
<li><a href="Teachercourse.action" target="main" >教师权限管理</a></li> </ul>
</li>
控制每个div的显示与不显示
<script type="text/javascript">
$(function(){
$(".banner_menu_content").hide();
$(".banner_menu_content1").hide();
$(".banner_menu_content2").hide();
$(".sideMenu .nLi h3").click(function(){
if($(this).parent(".nLi").hasClass("on")){
$(this).next(".sub").slideUp(300,function(){
$(this).parent(".nLi").removeClass("on");
});
}else{
$(this).next(".sub").slideDown(300,function(){
$(this).parent(".nLi").addClass("on");
});
}
});
});
$("#banner_menu_wrap").hover(function(){
targetlist(); //pointlist();
$(".banner_menu_content").show();
},function(){
$(".banner_menu_content").hide();
});
$(".banner_menu_content li").hover(function(){
$(".banner_menu_content").show();
$(".banner_menu_content1").show();
},function(){
$(".banner_menu_content1").hide();
});
$(".banner_menu_content1").hover(function(){
console.log("qqqqqqqqqqqqqqqqqqqqq");
$(".banner_menu_content").show();
$(".banner_menu_content1").show();
$(".banner_menu_content2").show();
},function(){
$(".banner_menu_content1").hide();
$(".banner_menu_content2").hide();
});
$(".banner_menu_content2").hover(function(){
$(".banner_menu_content1").show();
$(".banner_menu_content2").show();
},function(){
$(".banner_menu_content").hide();
$(".banner_menu_content1").hide();
$(".banner_menu_content2").hide();
});
</script>
2.Struts
<package name="aaa" extends="json-default">
<action name="targetlist" class="LoginAction" method="targetlist">
<result name="success" type="json">
<param name="root">targetlist</param>
</result></action>
<action name="requirementlist" class="LoginAction" method="requirementlist">
<result name="success" type="json">
<param name="root">requirementlist</param>
</result></action>
<action name="pointlist" class="LoginAction" method="pointlist">
<result name="success" type="json">
<param name="root">pointlist</param>
</result></action>
3.action
public String targetlist() throws Exception {
List<Teacher> teacherlist = mgr.findTeacherByNumber(username);
ActionContext.getContext().getSession().put("teacherlist", teacherlist);
String major=teacherlist.get(0).getMajor().trim();
targetlist=mgr.findTargetByMajor(major);
return SUCCESS;
}
public String requirementlist() throws Exception {
List<Teacher> teacherlist = mgr.findTeacherByNumber(username);
ActionContext.getContext().getSession().put("teacherlist", teacherlist);
String major=teacherlist.get(0).getMajor().trim();
lock.lock();
List<Requirement> requirementlist1;
requirementlist1=mgr.findRequirementByMajor(major);
requirementlist.clear();
//System.out.println(number);
for(int i=0;i<requirementlist1.size();i++){
if(requirementlist1.get(i).getId().getRequirementnumber().substring(0,1).equals(number.trim())){
requirementlist.add(requirementlist1.get(i));
}
}
lock.unlock();
//System.out.println(requirementlist.size());
return SUCCESS;
}
public String pointlist() throws Exception {
List<Teacher> teacherlist = mgr.findTeacherByNumber(username);
ActionContext.getContext().getSession().put("teacherlist", teacherlist);
String major=teacherlist.get(0).getMajor().trim();
lock.lock();
List<Point> pointlist1;
pointlist1=mgr.findPointByMajor(major);
//System.out.println(number);
pointlist.clear();
//System.out.print(pointlist.size()+"a ");
for(int i=0;i<pointlist1.size();i++){
if(pointlist1.get(i).getId().getPointnumber().substring(0,2).equals(number.trim())){
pointlist.add(pointlist1.get(i));
}
}
lock.unlock();
//System.out.println(pointlist1.size()+" "+pointlist.size());
return SUCCESS;
}
4.结果截图

ajax多级菜单栏的更多相关文章
- [ PHP+jQuery ] ajax 多级联动菜单的应用:电商网站的用户地址选择功能 ( 二 ) - 仿亚马逊下拉面板
/** jQuery version: 1.8.3 Author: 小dee Date: 2014.11.8 */ 接上一篇博客. 实现带缓存的仿亚马逊下拉面板 效果图: 图1 初始 图2 点击省份 ...
- ajax 多级联动 下拉框 Demo
写了ajax实现级联下拉框,考虑常用,并且级联个数随不同业务个数不同,于是就整理了一下,实现了 ajax + N级联动 下拉框的效果 效果图 HTML 代码 <h2> 省级联动</h ...
- AJAX多级下拉联动【JSON】
前言 前面我们已经使用过了XML作为数据载体在AJAX中与服务器进行交互.当时候我们的案例是二级联动,使用Servlet进行控制 这次我们使用JSON作为数据载体在AJAX与服务器交互,使用三级联动, ...
- struts ajax多级下拉菜单
先看项目截图: 看看要加入的jar包 除了struts核心的那个几个之外,我们还需要这两个 OK先看struts.xml <?xml version="1.0" encodi ...
- [MySQL] 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
前言: 关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,MySQL没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题 ...
- CSS实现左侧多级菜单栏
首先看要实现的效果, 主要是关心技术实现, 所以没怎么美化 我也是初学html, 所以写的比较啰嗦 1. 使用列表将内容显示出来 <!DOCTYPE html><html>&l ...
- QT学习之菜单栏与工具栏
QT学习之菜单栏与工具栏 目录 简单菜单栏 多级菜单栏 上下菜单栏 工具栏 简单菜单栏 程序示例 from PyQt5.QtWidgets import QApplication, QMainWind ...
- django权限二(多级菜单的设计以及展示)
多级权限菜单设计级标题栏 我们现在只有数据展示,要进入其他url还需要手动的输入路径,非常的麻烦,所以我们要设计 一个导航栏以及侧边多级菜单栏,这个展示是通过stark组件的设计的增删改查页面,而 每 ...
- android经典源码,很不错的开源框架
高仿最美应用项目源码 项目介绍 这是仿最美应用开发的基于mvp+rxjava+retrofit的项目,很值得学 github地址: https://github.com/JJOGGER/Beaut ...
随机推荐
- Java设计模式之八 ----- 责任链模式和命令模式
前言 在上一篇中我们学习了结构型模式的享元模式和代理模式.本篇则来学习下行为型模式的两个模式, 责任链模式(Chain of Responsibility Pattern)和命令模式(Command ...
- iframe无刷新跨域上传文件并获得返回值
原文:http://geeksun.iteye.com/blog/1070607 需求:从S平台上传文件到R平台,上传成功后R平台返回给S平台一个值,S平台是在一个页面弹出的浮窗里上传文件,所以不能用 ...
- python 之 初识面向对象
编程的两种范式 我们知道,程序 = 特定的语法+数据结构+算法 好像这个和我们熟知的小说有类似之处啊,小说 = 人物+背景+情节 写小说呢,都是有模板的,so,写程序也是一样,我们把这个“模板”叫做编 ...
- 1346:【例4-7】亲戚(relation)
并查集的模板题: #include<iostream> #include<cstdio> using namespace std; ; int fa[maxn]; int fi ...
- AirSim
https://github.com/Microsoft/AirSim 功能 1 虚拟模拟 2半虚拟模拟 安装教程 环境安装 1安装 cmake 直接下 .exe 2安装cuda 3安装Eigen 3 ...
- go标准库的学习-net/url
参考:https://studygolang.com/pkgdoc 导入方式: import "net/url" url包解析URL并实现了查询的逸码,参见RFC 3986. fu ...
- MP实战系列(六)之代码生成器讲解
MP的代码生成器可谓用"简洁"二字,来形容. 我个人觉得jeesite的代码生成器都不一定比它好用.当然也是由于我个人的习惯. 只需一键执行main方法,就可以生成对应的项目文件, ...
- Android Studio在华为真机上运行无法输出Debug日志解决
这主要与华为手机本身的权限设置有关,解决办法请看链接地址 链接地址: https://blog.csdn.net/seafishyls/article/details/52198814
- jmeter(十九)HTTP属性管理器
jmeter是一个开源灵活的接口和性能测试工具,当然也能利用jmeter进行接口自动化测试.在我们利用它进行测试过程中,最常用的sampler大概就是Http Request, 使用这个sampler ...
- C语言中getch()、getche()和getchar()
本文章为转载文章,文档贡献者wdzhangxiang 个人网址:www.baidu.com/p/wdzhangxiang 首先不要忘了,要用getch()必须引入头文件conio.h,以前学C语言的时 ...