究极超级详细的级联菜单

 HTML代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>级联菜单</title>
    <script src="../../jquery-3.6.0.js"></script>
</head>
<body>
<select name="selProvince" id="selProvince">
    <option value="">---请选择省份---</option>
</select>
<select name="selCity" id="selCity">
    <option value="">---请选择市---</option>
</select>
<select name="selCountry" id="selCountry">
    <option value="">---请选择县---</option>
</select>
</body>
</html>

jQuery代码

<script>
    var iNum1;
    var iNum2;
    var aProvince = ['湖省','淇省','浚省'];
    var aCity =[
        ['武汉','黄冈','荆门'],
        ['南京','无锡','镇江'],
        ['合肥','安庆','黄山']
    ];//注意这个是二维数组
    var aCountry =[
        [['武汉1','武汉2'], ['黄冈1','黄冈2'], ['荆门1','荆门2']],
        [['南京1','南京2'], ['无锡1','无锡2'], ['镇江1','镇江2']],
        [['合肥1','合肥2'], ['安庆1','安庆2'], ['黄山1','黄山2']]
    ];//注意这是二维数组
    $(function(){
        //   for循环省会的长度
        for(var i=0;i<aProvince.length;i++){
            //省份            追加省份     option里面通过省份的下标放入省份
            $('#selProvince').append('<option>'+aProvince[i]+'</option>');
        }
        // 选择省份         当变化触发事件
            $('#selProvince').change(function () {
                //市菜单     的被选元素的所有 儿子辈的
                // not从匹配元素集合中删除不包括这个的元素的其他元素。
                $('#selCity').children().not(':eq(0)').remove();
                //县菜单
                // not从匹配元素集合中删除不包括这个的元素的其他元素。
                $('#selCountry').children().not(':eq(0)').remove();
                //因为      1在用户里是开头      0是在数组里的开头
                iNum1 = $(this).children('option:selected').index()
                //比如选择的是湖南
                //现在iNne 就是1
                //  需要减一才能对应上数组
                var aaCity = aCity[iNum1-1]
                //aCity里面的数组
                // ['武汉','黄冈','荆门'],0
                // ['南京','无锡','镇江'],1
                // ['合肥','安庆','黄山']2
                // aaCity = aCity[0]
                // aaCity = ['武汉','黄冈','荆门']
                //        循环aaCity的长度 就是
                //  var j=0;j<aaCity.3;j++
                for(var j=0;j<aaCity.length;j++){
                    //给市级菜单  里面循环追加  ['武汉','黄冈','荆门']
                    //那么页面上就是    请选择市  武汉 , 黄冈 , 荆门
                    //对应的下标是      0         1     2     3
                     $('#selCity').append('<option>' + aaCity[j] + '</option>');
                }
            });
        //  选择市        当 变化触发事件
        $('#selCity').change(function () {

            $('#selCountry').children().not(':eq(0)').remove();
            //       获取被选中市级的下标
            //比如选择的是武汉
            //那么页面上就是    请选择市  武汉 , 黄冈 , 荆门
            //对应的下标是      0         1     2     3
            iNum2 = $(this).children('option:selected').index();
            // iNum2  = 1
            //因为上面选湖南的时候 iNmu = 1
            var aaCountry = aCountry[iNum1-1][iNum2-1];
            //    新变量   等于  二维数组里面[1-1][1-1]
            //aaCountry = aCountry[0][0]
            // var aCountry =[
            //     [['武汉1','武汉2'], ['黄冈1','黄冈2'], ['荆门1','荆门2']],
            //      [0][0]                 [0] [1]         [0][2]
            //     [['南京1','南京2'], ['无锡1','无锡2'], ['镇江1','镇江2']],
            //       [1][0]                  [1][1]           [1] [2]
            //     [['合肥1','合肥2'], ['安庆1','安庆2'], ['黄山1','黄山2']]
            //        [2] [0]               [2] [1]           [2] [2]
            // ];
            //    aaCountry = aCountry['武汉1','武汉2']
            //    aaCountry =  ['武汉1','武汉2']
            //    循环     aaCount的长度
            for(var k=0;k<aaCountry.length;k++){
                //然后给空白县       循环追加      ['武汉1','武汉2']
                $('#selCountry').append('<option>'+aaCountry[k]+'</option>');
            }
        });
    });
</script>

效果图

感谢  男同博主    "莉茉_Q"    的帮助

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值