这是原画猫整站中的一个页面,通过选择城市,再选择该城市下的区域查询对应的校区。
代码用的是jQuery,Ajax数据是本地的,没有真正的接口。
用来练习一下对数据的处理还是ok的。
点击图片看效果。
核心代码:
// 准备数据 $.get('data/schools.json', function (result) { // console.log(typeof result); // 初始化界面 // 默认的情况是第一个市,第一个市下面的第一个区,对应的学校 let cityIndex = 0; let areaIndex = 0; // 初始化城市 let str = ''; result.data.forEach(function (item, index) { str += `<option value="${item.cityName}">${item.cityName}</option>` }) $('#city1').html(str); // 初始化默认城市下面的区域 initArea(cityIndex); // 初始化对应的学校 changeSchools(cityIndex, areaIndex); //城市 change事件下要重新更新数据 $('#city1').on('change', function () { // selectedIndex是select标签的原生属性,可以保存被选中的选项的索引值 cityIndex = this.selectedIndex; // 根据城市初始化对应的区域 initArea(cityIndex); // 默认把城市下面的区域归零,默认选择第一个区。 areaIndex = 0; changeSchools(cityIndex, areaIndex); }) // 区域change下要更新数据 $('#city2').on('change', function () { // selectedIndex是select标签的原生属性,可以保存被选中的选项的索引值 cityIndex = $('#city1>option:selected').index(); // console.log(cityIndex,areaIndex); areaIndex = this.selectedIndex; changeSchools(cityIndex, areaIndex); }) function changeSchools(cityIndex, areaIndex) { // 城市和区域的初始化 $('.s-city').html(result.data[cityIndex].cityName + "," + result.data[cityIndex].areas[areaIndex].areaName); // 学校的初始化 str = ''; result.data[cityIndex].areas[areaIndex].schools.forEach(function (item, index) { str += `<li class="s-list clearfix"> <span class="s-number fl">${index + 1}</span> <div class="s-info fr"> <h3 class="f14">${item.schoolName}</h3> <p>校区编号:${item.id}</p> <p>联系电话:${item.tel}</p> <p>校区地址:${item.address}</p> </div> </li>` }) $('.s-all').html(str); } // 根据城市初始化对应的区域 function initArea (cityIndex) { let str = ''; result.data[cityIndex].areas.forEach(function (item, index) { str += `<option value="${item.areaName}">${item.areaName}</option>` }) $('#city2').html(str); } }, "json")
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。