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多级菜单栏的更多相关文章

  1. [ PHP+jQuery ] ajax 多级联动菜单的应用:电商网站的用户地址选择功能 ( 二 ) - 仿亚马逊下拉面板

    /** jQuery version: 1.8.3 Author: 小dee Date: 2014.11.8 */ 接上一篇博客. 实现带缓存的仿亚马逊下拉面板 效果图: 图1 初始 图2 点击省份 ...

  2. ajax 多级联动 下拉框 Demo

    写了ajax实现级联下拉框,考虑常用,并且级联个数随不同业务个数不同,于是就整理了一下,实现了 ajax + N级联动 下拉框的效果 效果图 HTML 代码 <h2> 省级联动</h ...

  3. AJAX多级下拉联动【JSON】

    前言 前面我们已经使用过了XML作为数据载体在AJAX中与服务器进行交互.当时候我们的案例是二级联动,使用Servlet进行控制 这次我们使用JSON作为数据载体在AJAX与服务器交互,使用三级联动, ...

  4. struts ajax多级下拉菜单

    先看项目截图: 看看要加入的jar包 除了struts核心的那个几个之外,我们还需要这两个 OK先看struts.xml <?xml version="1.0" encodi ...

  5. [MySQL] 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)

    前言:         关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,MySQL没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题 ...

  6. CSS实现左侧多级菜单栏

    首先看要实现的效果, 主要是关心技术实现, 所以没怎么美化 我也是初学html, 所以写的比较啰嗦 1. 使用列表将内容显示出来 <!DOCTYPE html><html>&l ...

  7. QT学习之菜单栏与工具栏

    QT学习之菜单栏与工具栏 目录 简单菜单栏 多级菜单栏 上下菜单栏 工具栏 简单菜单栏 程序示例 from PyQt5.QtWidgets import QApplication, QMainWind ...

  8. django权限二(多级菜单的设计以及展示)

    多级权限菜单设计级标题栏 我们现在只有数据展示,要进入其他url还需要手动的输入路径,非常的麻烦,所以我们要设计 一个导航栏以及侧边多级菜单栏,这个展示是通过stark组件的设计的增删改查页面,而 每 ...

  9. android经典源码,很不错的开源框架

    高仿最美应用项目源码 项目介绍 这是仿最美应用开发的基于mvp+rxjava+retrofit的项目,很值得学   github地址: https://github.com/JJOGGER/Beaut ...

随机推荐

  1. PHP实现一个简陋的注册登录页面

    PHP实现一个简陋的注册登录页面 今天来水一篇没有**用的 /滑稽脸,代码简陋臃肿考虑不全,各位大佬轻喷,还望不吝赐教. 首先考虑了一下需要至少四个页面:register.html.register. ...

  2. nginx配置静态资源访问

    本篇配置使用场景:本地通过浏览器访问linux上某个文件夹下的文件: 1.安装jdk及nginx步骤省略 2.进入正题 (1) 查看nginx安装路径:[root@localhost conf]# w ...

  3. 【Ansible 文档】【译文】模版(Jinja2)

    Templating (Jinja2) 正如在 variables 部分描述的那样, Ansible 使用Jinja2模版来启用动态表达式和访问变量. Ansible 扩展了许多 filtes 和 t ...

  4. Spring Component注解处理过程

    接下来: org.springframework.context.annotation.ComponentScanBeanDefinitionParser#parse方法展开加载过程:

  5. E - The Balance POJ - 2142 (欧几里德)

    题意:有两种砝码m1, m2和一个物体G,m1的个数x1,  m2的个数为x2, 问令x1+x2最小,并且将天平保持平衡 !输出  x1 和 x2 题解:这是欧几里德拓展的一个应用,欧几里德求不定方程 ...

  6. e 的由来

    https://www.zhihu.com/question/20296247 对数的发现 很多科学家发现对数螺线在自然界中广泛存在.从大如星系.台风,到小如花朵.海螺……宇宙中到处都是对数螺线的身影

  7. 理解Selection对象

    理解Selection对象 Selection对象的属性如下: var selection = window.getSelection(); console.log(selection); 通过上面的 ...

  8. AI 支持向量机

    支持向量机(Support Vector Machine,简称SVM),属于监督学习. 核技巧(kernel trick) 名字很吓人,乍一听完全不懂什么意思,但其实它的名字是很有意义的. 1)首先, ...

  9. STM32F103C8架构

    通常咱们拿到芯片的datasheet第一点需要关注的就是芯片的系统架构.下图就是STM32F103的系统架构图: 首先cortex内核是ARM公司的数字电路流片的产品,数字电路也就是逻辑电路经过FPG ...

  10. Android学习之基础知识四-Activity活动8讲(活动的灵活运用)

    一.判断当前是在哪个活动 1.我们还是接着上一讲的代码,首先创建一个Java类:BaseActivity.java.这个类我们不作为一个活动,也不在AndroidManifest.xml中注册,它只是 ...