JS动态级联菜单
JS动态级联菜单是前端常用的一个功能,特此抽时间研究了下,附上代码
<html>
<head>
<meta charset="utf-8" />
<title>级联菜单</title>
</head>
<body>
<form name="caseSelect" class="J_select">
<p>
<select name="chapter">
<option value="0">请选择章</option> </select>
<select name="section">
<option value="0">请选择节</option>
</select>
<select name="section_s">
<option value="0">请选择次节</option>
</select>
<select name="section_2s">
<option value="0">请选择次次节</option>
</select>
</p>
</form>
</body>
<script type="text/javascript" src="http://img3.cache.netease.com/game/img15/dahua-music/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
// 原生
var data = [
{text:'1. DOM基础',value:'1',
list:[
{text:'1.1 文档树',value:'1.1',
list:[{text:'1.1.1 Hello World',value:'1.1.1',
list:[{text:'1.1.1.1 OK',value:'1.1.1.1'}]},
{text:'1.1.2 Web Dev',value:'1.1.2',list:[{text:'1.1.2.1 OK2',value:'1.1.2.1'}]}]},
{text:'1.2 节点操作',value:'1.2'},
{text:'1.3 元素遍历',value:'1.3'},
{text:'1.4 样式操作',value:'1.4'},
{text:'1.5 属性操作',value:'1.5'},
{text:'1.6 表单操作',value:'1.6'}
]},
{text:'2. 事件模型',value:'2',
list:[
{text:'2.1 事件类型',value:'2.1',list:[{text:'2.1.1 Hello World',value:'2.1.1',list:[{text:'2.1.1.1 OK',value:'2.1.1.1'}]}]},
{text:'2.2 事件模型',value:'2.2'},
{text:'2.3 事件应用',value:'2.3'}
]}
]; // 文档加载完之后执行
jQuery(function($){
var Jselect = $('.J_select select');
var JilianSelect = window.JilianSelect;
var chapterSelect = $('.J_select select').eq(0);
var sectionSelect = $('.J_select select').eq(1);
var JilianSelect = {
init:function(Jselect,data){
var self = this;
// var this.Jselect = Jselect;
// var this.data = data;
self.bind(data);
this.fillSelect(Jselect.eq(0),data);
},
fillSelect: function(select,list){
//清除原有数据
var option = select.find('option');
for(var i=option.length-1;i>0;i--){
option.eq(i).remove();
}
// 新增数据
$.each(list, function(i,item){
select.append('<option value="'+item.value+'">'+item.text+'</option>');
});
},
bind: function(data){
var self = this;
Jselect.change( function() {
// 下拉触发
var value = this.value;
var nextSelect = $(this).next();
// 多层方法1
// var tag = this.value.split('.');
// var str="data";
// for(var j=0;j<tag.length;j++){
// str+="["+(tag[j]-1)+"].list";
// }
// self.fillSelect(nextSelect,eval(str)); // 2层
// $.each(data, function(i, item) {
// if (value == item.value) {
// self.fillSelect(nextSelect,item.list);
// }
// });
// 多层方法2
function tochild(it){
$.each(it, function(i, item) {
if (value == item.value) {
self.fillSelect(nextSelect,item.list);
} else{
if(item.list)
tochild(item.list);
}
});
}
tochild(data);
// $.each(data, function(i, item) {
// if (value == item.value) {
// self.fillSelect(nextSelect,item.list); // } else {
// // 第三个
// $.each(item.list, function(c, child) {
// if (value == child.value) {
// self.fillSelect(nextSelect,child.list);
// } else {
// // 第四个
// $.each(child.list, function(c4, child4) {
// if (value == child4.value) {
// self.fillSelect(nextSelect,child4.list);
// }
// })
// }
// })
// }
// }); });
}
}
JilianSelect.init(Jselect,data); });
</script>
<html>
JS动态级联菜单的更多相关文章
- JS实战 · 级联菜单选择省份和城市(两种)
DOM编程步骤.思路 1.定义界面: 通过html标签将数据进行封装: 2.定义一些静态样式: 利用css: 3.需要动态地完成的和用户的交互: a:明确事件源: ...
- js实现级联菜单(没有后台)
html代码: <!-- js级联菜单 --> <div id="cascMenu"> <select id="select" o ...
- JS实现级联菜单
是首先应该添加两个下拉列表并设置id属性来方便操作: <select id="country"> <option>国家</option> < ...
- js实现“级联菜单”
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js进阶 9-12 js如何实现级联菜单 (章节测试)
js进阶 9-12 js如何实现级联菜单 (章节测试) 一.总结 一句话总结: 1.js如何实现级联菜单 ? 二维数组,以第一级菜单的文本值做键,以对应的二级菜单选项的文本做值 2.用哪个属性可以获 ...
- Ajax实现动态的二级级联菜单
今天花了点时间用Ajax实现了一个二级级联菜单.整理总结一下.为了把重点放在Ajax和级联菜单的实现上,本文省略了数据库建表语句和操作数据库的代码! 数据库建表语句就不帖出来了.主要有两张表,区域表: ...
- 前台JS(Jquery)调用后台方法 无刷新级联菜单示例
前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 下面是做的一个前台用JQUERY,AJAX调用后台方法做的无刷新级联菜单 http://www.dtan.so CasMenu.aspx页 ...
- Ajax+json实现菜单动态级联
1:jsp //级联ajax处理函数 function areaChange(){ var areano=document.all("areaNo").value; v ...
- 【jQuery Demo】jQuery打造动态下滑菜单
作者:漫凯维奇 来源:[教程]jQuery打造动态下滑菜单 Tip:这只是一个转载,源代码可以在上面的来源博文中下载 此教程将分步讲解如何使用JQuery和CSS打造一个炫酷动感菜单.效果如 ...
随机推荐
- 关于有偿提供拼图响应式后台的通知---------pintuer ui的官方通知(www.pintuer.com)
拼图响应式前端框架版响应式后台正式发布. 考虑到目前拼图的状况,我们不打算免费开放下载,但也不会收各位朋友1分钱,该版后台将有偿提供给各位给予拼图贡献的朋友. 废话不多说,一切皆以有图有真相,下面上图 ...
- xml/map转换器,递归设计思路
xml/map转换器 图片:http://pan.baidu.com/s/1nuKJD13 应用场景,为什么要把xml转map?我直接用jdom,dom4j操作不行吗? 如果你了解模板引擎(像velo ...
- LDAP与Samba
默认的Samba服务器支持本地系统用户(smbpasswd添加后)访问Samba资源,不支持OpenLDAP服务器账号访问Samba共享资源 目的:配置完后,OpenLDAP每新增一个用户,就自动支持 ...
- uvm - driver
`ifndef MY_DRIVER__SV `define MY_DRIVER__SV class my_driver extends uvm_driver; function new(string ...
- iOS中线程同步基本详解
为什么使用线程同步技术:多个线程是同时执行的 如果多个线程同时操作一个资源 会造成此资源的数据错乱 线程同步简介 线程同步,多条线程按顺序地访问某个资源 注意:此处的同步不是一起执行的意思 是一个一个 ...
- C#中常用的几种读取XML文件的方法
1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/
- PL/SQL安装部署配置(配图解)
PL/SQL安装部署配置 下载好安装包之后,双击exe程序 双击安装程序,出现如下页面 点击[NEXT],出现如下界面 选择[I Accept...],点击[NEXT],出现如下界面 选择安装路径,点 ...
- 阅读笔记Multi-task Learning for Stock Selection [NIPS1996]
Multi-task Learning for Stock Selection Joumana Ghosn and Yoshua Bengio 摘要 用人工神经网络预测未来回报以便于做出对应的金融决 ...
- 对Hadoop体系的一点认识
前言:Hadoop体系核心大多源自Google的思想,里面的思想的确很精彩!比如分布式计算,云的思想等,比起其他简单技术,更使得我想写这文章, 虽然这个东东在一般公司不可能用到! 首先由于hadoop ...
- python学习笔记-多进程
multiprocessing from multiprocessing import Process import time def f(name): time.sleep(2) print('he ...