jQuery实现级联菜单<数据动态加载>
来源:互联网 发布:linux中chown r 编辑:程序博客网 时间:2024/05/22 04:46
考虑到之前做后台的下拉菜单的数据来自于后台返回的json,我就考虑自己重新实现一些demo,这个级联菜单只是其一:
HTML代码:
<!doctype html><html><head> <title>下拉列表联动</title> <meta charset="utf-8" /> <link rel="stylesheet" href="css/index2.css" /> <script type="text/javascript" src="js/jquery-3.0.0.min.js" defer="defer"></script> <script type="text/javascript" src="js/index2.js" defer="defer"></script></head><body> <div id="container"> <span>类别:</span> <select name="select1" id="sel1"> <option value="default" id="selection1" selected="selected">----请选择-----</option> </select> </div></body></html>
#container {width: 350px;height: 50px;margin: 50px auto;padding: 20px;border: 2px solid black;}select{margin: 10px;width: 110px;}
js代码,放在index2.js文件里
$(function() { (function() { var json = [{ id: 1, name: '蔬菜', child: [{ id: '1', name: '白菜' }, { id: '2', name: '萝卜' }, { id: '3', name: '菠菜' }] }, { id: 2, name: '肉类', child: [{ id: '1', name: '猪肉' }, { id: '2', name: '羊肉' }, { id: '3', name: '牛肉' }] }, { id: 3, name: '蛋类', child: [{ id: '1', name: '鸡蛋' }, { id: '2', name: '鹅蛋' }, { id: '3', name: '鸭蛋' }] }]; (function() { var idPre = "selection"; var flag = false; //默认不创建新的select var flag2 = false; //默认新的select下的option不存在. function guazai(index, id, $s) { var jsonObject = [],num = 0; if (index === 1) { jsonObject = json; flag = true; } if (index === 2) { jsonObject = json[id - 1].child; } num = jsonObject.length; var tempId ="", tempValue="", str=""; for (var i = 0; i < num; i++) { tempValue = jsonObject[i].name; tempId = idPre + index + jsonObject[i].id; str += "<option value='" + tempValue + "' id = '" + tempId + "'>" + tempValue + "</option>"; } $($s).append(str); } guazai(1, 0, '#sel1'); $("#sel1").change(function() { var str = ''; if (!flag) { $("#sel2 > option[value!='default']").remove(); flag2 = true; } if (flag) { if (!flag2) { str = "<select name='select2' id='sel2'></select>"; $(this).after(str); flag2 = true; } str = "<option value='default' id='" + idPre + 2 + "'>----请选择-----</option>"; $("#sel2").append(str); flag = false; } //获得当前对象的id var id = $(this).find("option:selected").attr("id"); var i = idPre.length + 1; id = parseInt(id.substring(i, id.length)); guazai(2, id, '#sel2'); }); })(); })();});
在js里使用了闭包,使全局变量成为闭包范围的变量,避免污染其它代码,json数据可以从后台传到前台的。
运行截图:
点击选择:
js代码说明:js运行时加载第一个下拉菜单的数据,选择时出现第二个下拉菜单以及相关二级选型。
当第一下拉选择“---请选择时--”,第二个下拉菜单显示“---请选择--”,并删除之前加载的二级选型。
希望和大家交流,这个代码在火狐和谷歌浏览器经过测试,所有代码通过csshint或者jslint的检查。
4 0
- jQuery实现级联菜单<数据动态加载>
- 动态加载列表框实现级联菜单的效果
- Ajax+XML实现级联下拉菜单的动态加载
- jQuery实现级联加载
- jQuery+java实现四级级联菜单
- smarty + ajax 实现二级动态级联菜单
- DOM实现动态添加级联菜单
- JAVA动态实现Excel三级级联菜单
- jquery实现动态菜单
- jquery 无限级联菜单
- Jquery写级联菜单
- jquery下拉级联菜单
- Jquery级联菜单
- asp动态级联菜单
- 动态级联菜单
- 动态级联菜单
- 动态创建级联菜单
- 动态创建级联菜单
- poj1318
- 我的VIM 配置 part2
- 全国计算机二级C 错题/知识点整理
- 从头到尾打印链表
- 仿乐透购彩app(7)
- jQuery实现级联菜单<数据动态加载>
- RDD-Transformation——groupByKey
- Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupported major.minor version
- HDU1251统计难题 trie树
- [php]include()和require()区别【学习笔记】
- 287. Find the Duplicate Number
- GDB的安装以及使用入门
- invalidate()和postInvalidate() 的区别
- 深入理解Java的接口和抽象类