<!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>