JS文件:

; (function($, w) {
var LinkSelect = function(config) {
var opt = {
doms: config.doms || [],
url: config.url || '',
type: config.type || 'get',
data: config.data || []
}; if (opt.doms.length < ) {
return console.log('必须两个或两个以上下拉框');
} function initial() {
for (var i = ; i < opt.doms.length; i++) {
(function(idx) {
opt.doms[idx].on('change',
function () {
var val = $(this).val();
var temp = getDataByValue(idx);
var nextDom = opt.doms[idx + ];
if (nextDom && nextDom.length > ) {
setDomData(nextDom, temp);
}
});
})(i);
} if (opt.data && opt.data.length > ) {
initialUi();
} else {
if (!opt.url || opt.url === '') {
return console.log('配置无效,必须指定url或data');
} else {
$.ajax({
url: opt.url,
type: opt.type,
success: function(response) {
opt.data = response;
initialUi();
}
});
}
}
} function initialUi() {
var dom = opt.doms[];
setDomData(dom, opt.data);
} function getDataByValue(idx) {
var source = opt.data;
for (var i = ; i <= idx; i++) {
(function(idx) {
var temp = source.find(function(item) {
return item.value.toString() === opt.doms[idx].val();
});
if (temp && temp.children) {
source = temp.children;
} else {
source = [];
}
})(i);
}
return source;
} function resetDom(dom) {
dom.html('<option value="">请选择</option>');
} function setDomData(dom, data) {
if (!data || data.length === ) {
resetDom(dom);
} else {
var html = '<option value="">请选择</option>';
$.each(data,
function(idx, item) {
html += '<option value="' + item.value + '">' + item.text + '</option>';
});
dom.html(html);
}
dom.trigger('change');
} initial();
};
w.LinkSelect = LinkSelect;
})(jQuery, window);

页面结构

<div class="container">
<h2>Index</h2>
<hr />
<div class="form-box">
<div class="row">
<div class="label">年级</div>
<div class="control">
<select id="grade"></select>
</div>
</div>
<div class="row">
<div class="label">班级</div>
<div class="control">
<select id="clazz"></select>
</div>
</div>
<div class="row">
<div class="label">组</div>
<div class="control">
<select id="group"></select>
</div>
</div>
</div>
</div>

使用方法:

<script src="lib/myui/LinkSelect.js"></script>
<script>
var ls = new LinkSelect({
doms: [$('#grade'), $('#clazz'), $('#group')],
data: [
{
text: '苗班',
value: ,
children: [
{
text: '苗1班',
value: ,
children: [
{
text: '1组',
value: ,
children: []
}]
},
{
text: '苗2班',
value: ,
children: []
}]
},
{
text: '小班',
value: ,
children: [
{
text: '小1班',
value: ,
children: []
}]
},
{
text: '中班',
value: ,
children: [
{
text: '中1班',
value: ,
children: []
},
{
text: '中2班',
value: ,
children: []
}]
}]
})
</script>

多级联动的select框的更多相关文章

  1. JQuery Easyui/TopJUI 创建多级联动下拉框(纯HTML实现!!!)

    JQuery Easyui/TopJUI 创建多级联动下拉框(纯HTML实现!!!) 效果展示: 代码如下: <form data-toggle="topjui-form"& ...

  2. ajax 多级联动 下拉框 Demo

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

  3. bootstrap 多级联动下拉框

    <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  4. jQuery制作简洁的多级联动Select下拉框

    今天我们要来分享一款很实用的jQuery插件,它是一个基于jQuery多级联动的省市地区Select下拉框,并且值得一提的是,这款联动下拉框是经过自定义美化过的,外观比浏览器自带的要漂亮许多.另外,这 ...

  5. vue 获取数据联动下拉框select ,并解决报Duplicate value found in v-for="...": "". Use track-by="$index" 错误

    公司项目中遇到一个问题,联动下拉框,并且数据是使用vue-resource从后台获取的,格式不利于输出联动下拉框,联动下拉框是第一个下拉框输出一个数组里每一项json的一个text值,从而第二下拉框输 ...

  6. MVC实现多级联动

    前言 多级联动(省级联动)的效果,网上现成的都有很多,各种JS实现,Jquery实现等等,今天我们要讲的是在MVC里面,如何更方便.更轻量的实现省级联动呢? 实现效果如下: 具体实现 如图所示,在HT ...

  7. 使用chosen插件实现多级联动和置位

    使用chosen插件实现多级联动和置位 首先写好第一个select,加上onchage属性之后,写onchange方法. <select data-placeholder="选择省份. ...

  8. C/C++ Qt 数据库与ComBox多级联动

    Qt中的SQL数据库组件可以与ComBox组件形成多级联动效果,在日常开发中多级联动效果应用非常广泛,例如当我们选择指定用户时,我们让其在另一个ComBox组件中列举出该用户所维护的主机列表,又或者当 ...

  9. PHP多级联动的学习(一)

    我尝试在ThinkCMF中实现多级联动,首先我开始看了dede的联动类别管理前后台的代码以及他的数据库,经过非常多次的尝试,我渐渐有了一点想法,并给予实施. 首先写出前台的界面.如图. 然后在数据库中 ...

随机推荐

  1. DC/DC尖峰脉冲吸收电路

    在DC/DC转换器中,脉冲问题直接影响到产品的EMI和电源噪声,需要在某些时候加尖峰脉冲吸收电路. 从上图可以看到,尖峰脉冲吸收电路就是一个RC吸收电路.至于在DC/DC哪里加RC吸收电路,这里有一个 ...

  2. [转]Unity3D学习笔记(四)天空、光晕和迷雾

    原文地址:http://bbs.9ria.com/thread-186942-1-1.html 作者:江湖风云 六年前第一次接触<魔兽世界>的时候,被其绚丽的画面所折服,一个叫做贫瘠之地的 ...

  3. C#调用ODBC连接SQL Server数据库的存储过程

    OdbcConnection con = new OdbcConnection("Driver={SQL Server};server=PC-200201070359;uid=sa;pwd= ...

  4. Java探索之旅(15)——包装类和字符类

    1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Jav ...

  5. zabbix的配置

    一.网络自动发现: 1.zabbix的网络自动发现是一个非常强大的功能,该功能可以完成以下工作. a.快速发现并添加主机. b.简单的管理. c.随着环境的改变而快速搭建监控系统. 2.网络发现基于以 ...

  6. github 分支操作

    1.查看分支 1.查看本地分支 使用git branch命令,如下: $ git branch * master *标识的是你当前所在的分支. 2.查看远程分支 命令如下: git branch -r ...

  7. 树莓派 Learning 002 装机后必要的操作 --- 09 root用户 密码

    树莓派 装机后必要的操作 - root用户 密码 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 树莓派使用的Linux是debian系统, ...

  8. error C2872: “flann”: 不明确的符号 --- PCL 与OpenCV2 的flann命名空间冲突问题的解决方法

    error C2872: "flann": 不明确的符号 - PCL 与OpenCV2命名空间冲突问题的解决方法 error C2872: "flann" 如果 ...

  9. hadoop-maven项目打包成可执行的jar

    环境: cdh5.1.0 jdk1.7 <build> <plugins> <!--指定JDK为1.7 --> <plugin> <groupId ...

  10. python实现DNA序列字符串转换,互补链,反向链,反向互补链

    在生物信息学分析中,经常对DNA序列进行一系列操作,包括子序列截取,互补序列获取,反向序列获取,反向互补序列获取.在python语言中,可编写如下函数完成这些简单功能. 子序列截取 python中对序 ...