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. MySQL的并发控制与加锁分析

    本文主要是针对MySQL/InnoDB的并发控制和加锁技术做一个比较深入的剖析,并且对其中涉及到的重要的概念,如多版本并发控制(MVCC),脏读(dirty read),幻读(phantom read ...

  2. Spark机器学习中ml和mllib中矩阵、向量

    1:Spark ML与Spark MLLIB区别? Spark MLlib是面向RDD数据抽象的编程工具类库,现在已经逐渐不再被Spark团队支持,逐渐转向Spark ML库,Spark ML是面向D ...

  3. 【转】.htaccess详解及.htaccess参数说明

    .htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户,所能使用的命令受到 ...

  4. PHP中使用Elasticsearch

    PHP中使用Elasticsearch composer require elasticsearch/elasticsearch 会自动加载合适的版本!我的php是5.6的,它会自动加载5.3的ela ...

  5. Python3 环境搭建

    Window 平台安装 Python: 以下为在 Window 平台上安装 Python 的简单步骤. 打开 WEB 浏览器访问 https://www.python.org/downloads/wi ...

  6. Python高级网络编程系列之终极篇---自己实现一个Web框架

    通过前面几个小节的学习,现在我们想要把之前学到的知识点给串联起来,实现一个很小型的Web框架.虽然很小,但是用到的知识点都是比较多的.如Socket编程,装饰器传参在实际项目中如何使用.通过这一节的学 ...

  7. ADB安装及使用

    环境安装: 下载.安装和配置ADB     https://jingyan.baidu.com/article/22fe7cedf67e353002617f25.html 安装驱动adbdriver  ...

  8. webpack-dev-server的简单使用

    webpack-dev-server的简单使用 1.npm install webpack-dev-server --save-dev 2.配置 package.json "scripts& ...

  9. nightwatch-前端自动化测试工具安装

    最近再弄这个前端自动化测试工具,刚开始弄了几天,目前为止遇到很多坑,光是安装就费了不少时间,记录一下,以便自己忘记. 这里是它的官网,目前没找到中文版的官网,全英文,对我这个英语渣来说有点难理解. 一 ...

  10. AI 卷积神经网络

    卷积神经网络(Convolutional Neural Network,简称CNN),顾名思义,使用了卷积.不过,这里用到的卷积和数学中的不完全一致. 1.连续卷积 2.离散卷积 3.二维离散卷积 4 ...