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 ...
随机推荐
- zookeeper-01 概述
1. Zookeeper概念简介和应用场景 1.1. 概念简介 Zookeeper是一个分布式协调服务:就是为用户的分布式应用程序提供协调服务 A.zookeeper是为别的分布式程序服务的 B.Z ...
- NSTimer+倒计时功能实现
NSTimer 一.前言,查看官方文档,可以发现NSTimer是Foundation框架下的一个类,它直接继承与NSObject. 二.常用属性 1. @property (copy) NSDate ...
- 最后一个单词的长度的golang实现
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 输入: "He ...
- python 之 递归
终于来到了这里,这是一座山,山那边都是神仙 定义:在一个函数里调用函数本身 最好的例子就是,求阶乘 def factorial(n): if n == 1: return 1 elif n > ...
- 【美妙的Python之三】Python 对象解析
美妙的Python之Python对象 简而言之: Python 是能你无限惊喜的语言.与众不同. Python对象概念的理解,是理解Python数据存储的前提.Pyth ...
- 关于ThinkPHP执行长时间任务可能导致PHP使用内存越来越大的问题
ThinkPHP执行长时间任务时,可能导致PHP使用内存越来越大,最后因为内存超出配置限额而程序挂掉. 其实这在很久以前就无意之中发现的一个问题. 3.x之前有这个问题,5.0以后的,应该是已修复了的 ...
- mysql排序索引优化
为排序使用索引 KEY a_b_c (a,b,c) order by 能使用索引最左前缀 -order by a -order by a,b -order by a,b,c -order by a d ...
- jQuery-iframe加载完成后触发的事件监听
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 最近遇到一个问题,要写一个后台管理系统的layout,里面content是一个ifra ...
- Python--Windows下安装虚拟环境
为什么需要虚拟环境 在python开发中,我们可能会遇到一种情况:就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突.在这种情况之下,我们就需要一个工具能够将这两 ...
- 转载 锁机制与原子操作 <第四篇>
一.线程同步中的一些概念 1.1临界区(共享区)的概念 在多线程的环境中,可能需要共同使用一些公共资源,这些资源可能是变量,方法逻辑段等等,这些被多个线程共用的区域统称为临界区(共享区),临界区的资源 ...