<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<select >
<option value="">品牌</option>
<option value="">宝马</option>
<option value="">奔驰</option>
</select>
<select >

<option value="">车型</option>
<option value="">520LI</option>
</select>
<select >

<option value="">车款</option>
<option value="">2016 1.8T</option>
</select>


</body>
<script src="js/make_json.js" type="text/javascript" charset="utf-8"></script>
<script src="js/model_json.js" type="text/javascript" charset="utf-8"></script>
<script src="js/car_json.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery-1.7.2.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">

/**
* 1. 更新车型 根据品牌ID
* 2. 更新车款 根据车型ID
* 3..更新数据 根据上一级ID
*
* 根据ID可以获取对应的数据
* 遍历数据生成html代码
* 根据HTML更新内容
* 设置默认被选中的元素
*
* mvc
* model 模型 数据模型 数据
* view 视图 html代码 能看见的 以什么方式显示
* controller 控制器 逻辑部分 、应该做什么、准备做什么、什么事件触发 什么功能。。。。
*
* 控制器-》发命令给 模型,让模型返回数据-》控制器得到数据 -》控制器将数据交给视图显示
*
*
*/

(function($){

//0.定义三个对象 分别是控制器、模型、视图

var ctrl = {

init:function(){

console.log('初始化');

this.create_brand();

this.brand_change();

this.model_change();


},

//创建品牌列表
create_brand:function(){

//调用模型方法获取品牌数据

var data = model.get_brand();

// 将数据交给视图,让视图来显示

view.show_brand(data);

},

//创建车型列表

create_model:function(){

//获取ID
var id = $('select:first').val();

//调用模型根据ID获取对应的车型数据

var data = model.get_model(id);

//将数据交给视图让其显示

view.show_model(data);

//车型创建完之后立即创建车款

ctrl.create_car();

},

create_car:function(){
//获取ID
var id = $('select:eq(1)').val();

//调用模型根据ID获取对应的车型数据

var data = model.get_car(id);

//将数据交给视图让其显示

view.show_car(data);
},


//品牌切换事件
brand_change:function(){

var self = this;

//品牌变化事件
$('select:first').change(function(){

self.create_model()
})

},



//车型切换事件
model_change:function(){
var self = this;
//品牌变化事件
$('select:eq(1)').change(function(){

self.create_car()

})

}


};


var model = {
//获取品牌数据
get_brand:function(){

return make_json
},

//获取车型数据

get_model:function(id){

return model_json[id]

},
//获取车款数据

get_car:function(id){

return car_json[id]

}

};


var view = {
// 根据数据及选择器 创建html代码并更新到对应的元素上
create_options:function(data,selector){

//1.遍历生成html代码

var html = '';

$.each(data, function() {

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

});

$(selector).html(html)


},

//根据品牌数据显示品牌列表
show_brand:function(data){

this.create_options(data,'select:first');

},

//根据车型数据显示车型列表
show_model:function(data){

this.create_options(data,'select:eq(1)');

},
//根据车款数据显示车款列表
show_car:function(data){

this.create_options(data,'select:last');

}

};

//1.执行初始化

ctrl.init();


})(jQuery);

</script>
</html>