博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
无限级别菜单下拉
阅读量:6979 次
发布时间:2019-06-27

本文共 2172 字,大约阅读时间需要 7 分钟。

html

<meta charset="utf-8">

<div class="unlimited" data="1" ajaxurl="#">
    <select class="select_1" data="" name="bank">
        <option value="">请选择</option>
        <option value="1">四川省分行</option>
    </select>
</div>

script

<script src="script/jquery-1.4.2.min.js"></script>

<script type="text/javascript">$(function () {
    unlimited_select();
});
//Unlimited Select Functions
function unlimited_select(){
     $('.unlimited').change(function () {
        var num = parseInt($(this).attr('data'));
        //找到发生改变的节点 并替换相应data值
        for (var i = 1; i <= num; i++) {
            var select_obj = $(".select_" + i);
            var change_val = select_obj.val();
            var select_val = select_obj.attr('data');
            if (change_val != select_val) {
                select_obj.attr('data', change_val); //替换data值
                var current_num = i; //找到节点
                break;
            }
        }
        //当不是最后一个节点时,移除后面的节点,并获取name属性
        if (current_num < num) {
            for (var i = current_num + 1; i <= num; i++) {
                var select_obj = $(".select_" + i);
                if (i == num) {
                    var select_name = select_obj.attr('name');
                }
                select_obj.remove();
            }
        } else { //如果是当前最后节点,直接获取name属性,并移除该属性
            var select_name = $(".select_" + num).attr('name');
            //$(".select_" + num).removeAttr('name');
        }
        //如果选中的值不为空,则ajax请求后续节点
        if (change_val == '') {
            $(this).attr('data', current_num); //替换节点数data值
            $(".select_" + current_num).attr('name', select_name);
        } else {
            var url = $(this).attr('ajaxurl');
            //do ajax... return bank_data...
            /*~~~~~~jsfiddle不方便做ajax请求操作,略过
            var bank_data = null;
   $.ajax({
url: url,
       async: false,
type: 'POST',
data:{ },
       success: function(msg){
  bank_data = $.parseJSON(msg);
              }
       });
            用下面替代~~~~~~*/
            var bank_data = {
                '4': 'AAA支行',
                '5': 'BBB支行',
                '6': 'CCC支行'
            };
            if (bank_data) { //有返回下一节点结果
                $(this).attr('data', current_num + 1);
                add_select( 'unlimited', select_name, current_num + 1, bank_data );
                $(".select_" + current_num).removeAttr('name');
            } else { //没有下一节点
                $(this).attr('data', current_num);
            }
        }
    });
}
function add_select( class_name, select_name, add_num, data){
    var new_select = '<select class="select_'+add_num+'" data="" name="'+select_name+'"><option value="">请选择</option>';
    for( key in data ){
        new_select += '<option value="'+key+'">'+data[key]+'</option>';
    }
    new_select += '</select>';
    $('.'+class_name).append(new_select);
}
</script>

 

转载地址:http://ehupl.baihongyu.com/

你可能感兴趣的文章
报错 org.springframework.beans.factory.BeanCreationException
查看>>
IOS分享扩展使用JS脚本
查看>>
Hibernate 的 session.load()使用方法
查看>>
$httpprovider指令中拦截器interceptors的使用介绍
查看>>
gulp插件之browser-sync安装报错
查看>>
mongodb 连接和备份
查看>>
Velocity文档(3)
查看>>
SQL中的case when then else end用法
查看>>
通过data:image/png;base64把图片直接写在src里
查看>>
Android TextView的一些小知识
查看>>
css :after或:before写小三角形
查看>>
VMware Tools手动下载
查看>>
干货:排名前 16 的 Java 工具类!
查看>>
Solr 4.x定时、实时增量索引 - 修改、删除和新增索引
查看>>
Linux软件包命令
查看>>
win 64位系统安装带有c编写的python模块出现ValueError: [u'path']解决
查看>>
SSO单点登录基于CAS架构封装 Memcached 实例
查看>>
sparkCore源码解析之思维脑图
查看>>
Quartz动态添加、修改和删除定时任务
查看>>
自定义classloader中的接口调用
查看>>