Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)


Posted in jQuery onJune 09, 2017

本文主要介绍使用 Jquery+Ajax+xml,首先需要一个包含我国所有地图信息的xml文档。

此处选用的xml文档(共1000多行)主要结构如下:

<?xml version="1.0" encoding="utf-8"?>
<area Country="China">
 <province ID="1" provinceID="110000" province="北京市">
  <City CityID="110100" City="市辖区">
   <Piecearea PieceareaID="110101" Piecearea="东城区" />
   <Piecearea PieceareaID="110102" Piecearea="西城区" />
   <Piecearea PieceareaID="110103" Piecearea="崇文区" />
   <Piecearea PieceareaID="110104" Piecearea="宣武区" />
   <Piecearea PieceareaID="110105" Piecearea="朝阳区" />
   <Piecearea PieceareaID="110106" Piecearea="丰台区" />
   <Piecearea PieceareaID="110107" Piecearea="石景山区" />
   <Piecearea PieceareaID="110108" Piecearea="海淀区" />
   <Piecearea PieceareaID="110109" Piecearea="门头沟区" />
   <Piecearea PieceareaID="110111" Piecearea="房山区" />
   <Piecearea PieceareaID="110112" Piecearea="通州区" />
   <Piecearea PieceareaID="110113" Piecearea="顺义区" />
   <Piecearea PieceareaID="110114" Piecearea="昌平区" />
   <Piecearea PieceareaID="110115" Piecearea="大兴区" />
   <Piecearea PieceareaID="110116" Piecearea="怀柔区" />
   <Piecearea PieceareaID="110117" Piecearea="平谷区" />
  </City>
<province>

制作对应的表单,根据设置选择省/市的动作:

<h2>地区三级联动菜单</h2>
  省:<select id="province" onchange="showcity()"><option value="0">-请选择-</option></select>
  市:<select id="city" onchange="showdistrict()"><option value="0">-请选择-</option></select>
  地区:<select id="district"><option value="0">-请选择-</option></select>

以下是JS代码行

//声明一个全局变量,用于存储第一次请求的xml信息,避免后续多次频繁请求xml
    var xmldom =null;
    //获取并显示省份信息
    function showprovince(){
      //使用ajax去服务器获得xml文件里面的省份信息
      $.ajax({
        url:'./ChinaArea.xml',
        //data:
        dataType:'xml',//相当于调用responseXML
        type:'get',
        success:function(msg){
          //将返回的xml信息赋予xmldom
          xmldom = msg;
          //获得province 元素节点对象
          var prov = $(msg).find('province');
          //遍历省份信息
          prov.each(function(k,v){
            var nm = $(this).attr('province');
            var id = $(this).attr('provinceID');
            //追加到指定的节点
            $('#province').append("<option value="+id+">"+nm+"</option>");
          });
        }

      });
    }
    //网页加载显示省份信息  
    $(function(){
      showprovince();
    });
    function showcity(){
      //获取 省份 的id
      var pid = $('#province option:selected').val();
      //根据xmldom信息 找到指定的省份节点
      var xml_province = $(xmldom).find('province[provinceID='+pid+']');
      // 获取对应所有县市节点
      var city = $(xml_province).find('City');
      //在遍历追加前,先清空此前已经显示的信息
      $('#city').empty();
      $('#city').append('<option value="0">-请选择-</option>');
      //遍历追加县市
      city.each(function(k,v){
        var nm = $(this).attr('City');
        var id = $(this).attr('CityID');
        $('#city').append('<option value='+id+'>'+nm+'</option>');
      });
    }
    //以下函数的逻辑与showcity()的逻辑一致
    function showdistrict(){
      //获取 县市 的id
      var cid = $('#city option:selected').val();
      //根据xmldom信息 找到指定的县市节点
      var xml_city = $(xmldom).find('City[CityID='+cid+']');
      // 获取对应所有地区节点
      var district = $(xml_city).find('Piecearea');
      $('#district').empty();
      $('#district').append('<option value="0">-请选择-</option>');
      district.each(function(k,v){
        var nm = $(this).attr('Piecearea');
        var id = $(this).attr('PieceareaID');
        $('#district').append('<option value='+id+'>'+nm+'</option>');
      });
    }

以上这篇Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jquery.form.js异步提交表单详解
Apr 25 jQuery
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
Vue+jquery实现表格指定列的文字收缩的示例代码
Jan 09 jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
JQuery事件委托原理与用法实例分析
May 13 jQuery
JQuery常见节点操作实例分析
May 15 jQuery
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
jquery图片预览插件实现方法详解
Jul 18 jQuery
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 jQuery
jQuery实现全选、反选和不选功能的方法详解
Dec 04 jQuery
jQuery Validate表单验证插件实现代码
Jun 08 #jQuery
jquery Ajax实现Select动态添加数据
Jun 08 #jQuery
jquery实现放大镜简洁代码(推荐)
Jun 08 #jQuery
jQuery+ajax实现局部刷新的两种方法
Jun 08 #jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 #jQuery
jquery dataTable 后台加载数据并分页实例代码
Jun 07 #jQuery
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 #jQuery
You might like
PHP模板引擎smarty详细介绍
2015/05/26 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python Nose框架编写测试用例方法
2017/10/26 Python
python实现教务管理系统
2018/03/12 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
python如何求圆的面积
2020/07/01 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
单位实习证明怎么写
2014/01/17 职场文书
捐款倡议书范文
2014/02/02 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
图文详解matlab原始处理图像几何变换
2021/07/09 Python