省市区三级联动jquery实现代码

最近项目需要用到关于省市区三级联动下拉选择的功能,于是乎网上搜了一些做法,觉得有一些只是给出了小的案例,却很难找到详细的省、市、区的具体数据(其实,用baidu搜索就是这样啦),果断用google,搜出来的博文质量相当高,特此记录记录!!!

     对于这个效果,其实我发现主要在于两点:1、jquery的筛选遍历操作;2、存储省、市、区这些数据时候的格式。另外一点是如何将获取得到的数据放到select option中(即下拉框中!)

     对于第一个问题的解决,其实熟悉Jquery的博友估计是不难的,主要涉及:find,eq,attr等函数的操作。下面是其中涉及到的一个案例:用于获取省的所有数据,并将其放到下拉框中:

function func_suc_getXmlProvice(xml) { 
 //jquery的查找功能 
 var sheng = $(xml).find("prov"); 
  
 //jquery的遍历与查询匹配 eq功能,并将其放到下拉框中 
 sheng.each(function(i) { 
  province.append(""); 
 }); 
 } 

     下面进入正题,建立一个动态web工程,然后将下面讲到的html、js文件、存放省市区xml文件 都放在Web-Contetn下即可。首先看一看前端html文件province_city_select.html:

 
 
 
 
省市区三级联动 
 
  
 
 
   
   
   
  
地址是:

     然后注意放进jquery-1.8.3.min.js,可以来我这里下来:jquery库文件。然后需要新建province_city.js,其源码如下:

$(function() { 
   
  var address = $("#pro_city"); 
  var province = $("#province"); 
  var city = $("#city"); 
  var area = $("#area"); 
  var preProvince = ""; 
  var preCity = ""; 
  var preArea = ""; 
   
  //初始化 
  province.html(preProvince); 
  city.html(preCity); 
  area.html(preArea); 
   
  //文档加载完毕:即从province_city_select_Info.xml获取数据,成功之后采用 
  //func_suc_getXmlProvice进行 省的 解析 
  $.ajax({ 
    type : "GET", 
    url : "province_city_select_Info.xml", 
    success : func_suc_getXmlProvice 
  }); 
   
  //省 下拉选择发生变化触发的事件 
  province.change(function() { 
    //province.val() : 返回是每个省对应的下标,序号从0开始 
    if (province.val() != "") { 
      city.html(preCity); 
       
      //根据下拉得到的省对于的下标序号,动态从从province_city_select_Info.xml获取数据,成功之后采用 
      //func_suc_getXmlProvice进行省对应的市的解析 
      $.ajax({ 
        type : "GET", 
        url : "province_city_select_Info.xml", 
        success : func_suc_getXmlCity 
      }); 
       
    } 
  }); 
   
  //市 下拉选择发生变化触发的事件 
  city.change(function() { 
    area.html(preArea); 
    $.ajax({ 
      type : "GET", 
      url : "province_city_select_Info.xml", 
       
      //根据下拉得到的省、市对于的下标序号,动态从从province_city_select_Info.xml获取数据,成功之后采用 
      //func_suc_getXmlArea进行省对应的市对于的区的解析 
      success : func_suc_getXmlArea 
    }); 
  }); 
   
  //区 下拉选择发生变化触发的事件 
  area.change(function() { 
    var value = province.find("option:selected").text() 
        + city.find("option:selected").text() 
        + area.find("option:selected").text(); 
    address.text(value); 
    $("#txtProCity").val(value); 
  }); 
   
  //解析获取xml格式文件中的prov标签,得到所有的省,并逐个进行遍历 放进下拉框中 
  function func_suc_getXmlProvice(xml) { 
    //jquery的查找功能 
    var sheng = $(xml).find("prov"); 
     
    //jquery的遍历与查询匹配 eq功能,并将其放到下拉框中 
    sheng.each(function(i) { 
      province.append(""); 
    }); 
  } 
   
  function func_suc_getXmlCity(xml) { 
    var xml_sheng = $(xml).find("prov"); 
    var pro_num = parseInt(province.val()); 
    var xml_shi = xml_sheng.eq(pro_num).find("city"); 
    xml_shi.each(function(j) { 
      city.append(""); 
    }); 
  } 
   
  function func_suc_getXmlArea(xml) { 
    var xml_sheng = $(xml).find("prov"); 
    var pro_num = parseInt(province.val()); 
    var xml_shi = xml_sheng.eq(pro_num).find("city"); 
    var city_num = parseInt(city.val()); 
    var xml_xianqu = xml_shi.eq(city_num).find("county"); 
    xml_xianqu.each(function(k) { 
      area.append(""); 
    }); 
  } 
}); 

     然后,重点来了,当然是province_city_select_Info.xml里面的内容啦,因为比较多,我只贴出一部分,如下所示,其余的可以到我这里来下载:省市区三级数据

 
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
     
     
       
       
       
       
       
       
       
       
       
       
       
     
   

好了,介绍一下效果:

刚开始的:

省市区三级联动jquery实现代码_第1张图片
 

下拉选择省的,然后出现市的,选择了市的,然后出现了区的,最后选择区的时候,得到地址:

省市区三级联动jquery实现代码_第2张图片

省市区三级联动jquery实现代码_第3张图片

省市区三级联动jquery实现代码_第4张图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(省市区三级联动jquery实现代码)