<!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">
var car_json ={
5001: [{
name: "1.8 TSI 2012-2014",
pinyin: "",
id: 129643
}],
5002: [{
name: "2.0 TSI 2012-2014",
pinyin: "",
id: 129176
}]
};

var make_json = {
aodi: {
name: "奥迪",
id: 272
},
baoma: {
name: "宝马",
id: 270
} }
var model_json = {
201: [{
name: "Leon Cupra",
pinyin: "",
id: 5002
}, {
name: "Leon FR",
pinyin: "",
id: 5001
}]
}
      //0. 获取元素

      var selects = $('select');

      //品牌
var make = selects.eq(0); //车型
var model = selects.eq(1); //车款
var car = selects.eq(2); //1.遍历生成品牌列表 var html = ''; $.each(make_json,function(i){ //2.将品牌信息拼接成html html+='<option value="'+this.id+'">'+this.name+'</option>'; }) //3.更新品牌列表 make.children(':not(:first)').remove(); make.append(html); //4.添加品牌change事件 make.change(function(){ //5.获取当前的品牌ID var id = this.value; //6. 根据品牌ID获取当前品牌下的车型数据 var modelData = model_json[id] || [] ; //7.遍历车型 数据生成车型 列表 var html = ''; $.each(modelData,function(i){ //8.将车型信息拼接成html html+='<option value="'+this.id+'">'+this.name+'</option>'; }) //9.更新车型列表 model.children(':not(:first)').remove(); model.append(html); //9.1 设置默认被选中车型 获取车型 中的第二个选项 model.children(':eq(1)').attr('selected',true); //9.2根据当前被选中的车型 获取对应的车款信息 var id = model.val(); //6. 根据车型ID获取当前品牌下的车款数据 var carData = car_json[id] || [] ; //7.遍历车型 数据生成车型 列表 var html = ''; $.each(carData,function(i){ //8.将车型信息拼接成html html+='<option value="'+this.id+'">'+this.name+'</option>'; }) //9.更新车型列表 car.children(':not(:first)').remove(); car.append(html); car.children(':eq(1)').attr('selected',true);
}) //10.车型change事件 model.change(function(){ //11.获取当前的车型ID var id = this.value; //6. 根据车型ID获取当前品牌下的车款数据 var carData = car_json[id] || [] ; //7.遍历车型 数据生成车型 列表 var html = ''; $.each(carData,function(i){ //8.将车型信息拼接成html html+='<option value="'+this.id+'">'+this.name+'</option>'; }) //9.更新车型列表 car.children(':not(:first)').remove(); car.append(html);
car.children(':eq(1)').attr('selected',true);
}) </script>
</html>

js三级联动的更多相关文章

  1. 省市区js三级联动(原创)

    看了一些网上的js三级联动,但感觉不是缺这,就是少那,决定亲自操刀写了一个,现记录如下,以备后用! <!DOCTYPE html> <html> <head> &l ...

  2. js 三级联动

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  3. js 三级联动 1

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. 简单的纯js三级联动

    参考这个  日尼禾尔  二级联动 写了三级联动 <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  5. 原生js三级联动

    <!DOCTYPE html> <html lang="en"> <head> <title> 三级联动 </title> ...

  6. Js三级联动菜单

    效果演示: <SCRIPT LANGUAGE="JavaScript"> <!-- function CreateSelect(_FormName,_SName, ...

  7. JS三级联动实例

    简单的HTML实例: <h4>选择省</h4> <div class="selectSheng"></div> <select ...

  8. js三级联动效果city-picker

    链接:https://pan.baidu.com/s/1NE_EO5_xGvR-y-lboYap7g 提取码:h00e 效果展示: 解决: 动态赋值: 注意:在执行赋值之前,必须执行reset和des ...

  9. 三级联动第二种方法 三级联动.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. 很火的Java题——判断一个整数是否是奇数

    完成以下代码,判断一个整数是否是奇数: public boolean isOdd(int i) 看过<编程珠玑>的人都知道这道题的答案和其中极为简单的道理. 最普遍的风格,如下: 这个函数 ...

  2. js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题

    js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...

  3. 文件路径、File协议、FTP协议、Http协议之间简单的区别

    File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样,基本的格式如下:file:///文件路径. FTP是文件传输协议,可以用于互联网上.例如,你有一个网站,放在 ...

  4. DOM文档对象模型

  5. axios构建请求池处理全局loading状态&&axios避免重复请求

    很多时候我们能够看到类似进度条一样的东西在页面顶部进行加载,代表页面是否加载完成,或者其他的loading效果,我们当然不可能通过promise.all来讲所有的请求合并到一起然后进行处理,这个时候我 ...

  6. Mysql批量导入约束报错

    SET foreign_key_checks = 0;   禁用外键,在文件顶部加 SOURCE dump_file_name;      进行SQL执行 SET foreign_key_checks ...

  7. jenkins+python+kubectl实现批量更新k8s镜像

    一.jenkins使用官方镜像(官方镜像默认是jenkins用户,权限太低) 因此通过dockerfile重新改为root启动 FROM jenkins/jenkins:lts MAINTAINER ...

  8. 基于binlog的增量备份

    1.1 增量备份简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件:第二次增 ...

  9. ccf画图

    问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩形的例子.第一个矩形是 ...

  10. java中4种修饰符访问权限的区别

    访问权限 类 本包 子类 其他包 public √ √ √ √ protected √ √ √ x default(缺省) √ √ x x private √ x x x