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插件Echarts实现的渐变色柱状图
Mar 23 jQuery
Jquery把获取到的input值转换成json
May 15 jQuery
jQuery日期范围选择器附源码下载
May 23 jQuery
基于JQuery的Ajax方法使用详解
Aug 16 jQuery
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
jQuery实现弹幕特效
Nov 29 jQuery
jQuery插件实现图片轮播效果
Oct 19 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
python 将md5转为16字节的方法
2018/05/29 Python
利用python求积分的实例
2019/07/03 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Pytorch中.new()的作用详解
2020/02/18 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
客服专员岗位职责范本
2013/11/29 职场文书
培训讲师邀请函
2014/01/10 职场文书
服务承诺口号
2014/05/22 职场文书
拓展训练激励口号
2014/06/17 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
档案管理员岗位职责
2015/02/12 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
德生2P3收音机开箱评测
2022/04/30 无线电