基于MVC的三级联动

Html代码:

<div class="box">
    <select class="make">
        <option>请选择品牌</option>
    </select>
    <select class="model">
        <option>请选择车型</option>
    </select>
    <select class="car">
        <option>请选择车款</option>
    </select>
</div>

js代码:

<script src="jquery-1.8.3.min.js"></script>
<script src="car.make.js"></script>
<script src="car.car.js"></script>
<script src="car.model.js"></script>
<script>
    //MVC与OOP模式
    /*
    * mvc编程思想
    * model   模型 (数据)
    * controller   控制器
    * view   视图
    * 下拉事件    由控制器处理
    * 获取数据    由模型处理
    * 数据的显示  由视图处理
    * 控制器   发布指令   调用模型获取数据
    *
    * 控制器拿到数据后发布指令将数据交给视图进行显示
    *
    *
    * */

    //定义一个控制器对象
    var ctrl={
        //初始化函数
        init:function(){
            this.createBrand();
        },
        //品牌函数
        createBrand:function(){

            //调用模型获取数据
            var data=model.getBrand();

            //将数据交给视图去渲染(显示)
            view.showBrand(data);

            this.createModel();
            this.brandChange();
            this.modelChange();
        },
        //车型函数
        createModel:function(){

            var id=$('.make').val();
            var data=model.getModel(id);
            view.showModel(data);
            this.createCar();
        },
        //车款函数
        createCar:function(){

            var id=$('.model').val();
            var data=model.getCar(id);
            view.showCar(data);
        },
        //品牌点击函数
        brandChange:function(){

            $('.make').change(function(){
                ctrl.createModel();
            })
        },
        //车型点击函数
        modelChange:function(){

            $('.model').change(function(){
                ctrl.createCar();
            })
        }
    };

    //定义一个模型对象
    var model={
        //获取第一个数据
        getBrand:function(){

            return car_make;
        },
        //获取第二个数据
        getModel:function(id){

            return car_model[id];
        },
        //获取第三个数据
        getCar:function(id){

            return car_car[id];
        }
    };

    //定义一个视图对象
    var view={
        //下拉列表
        createSelect:function(title,data,element){

            var html='<option>'+title+'</option>';
            $.each(data,function(){

                html+='<option value="'+this.id+'">'+this.name+'</option>'
            });

            element.html(html);

            element.children().eq(1).attr('selected',true);
        },
        //品牌
        showBrand:function(data){

            this.createSelect('请选择品牌',data,$('.make'));
        },
        //车型
        showModel:function(data){

            this.createSelect('请选择车型',data,$('.model'));
        },
        //车款
        showCar:function(data){

            this.createSelect('请选择车款',data,$('.car'));
        }
    };

    ctrl.init();

</script>

最终显示效果:
演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黑ii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值