JavaScript三级联动jQuery写法

简介: JavaScript三级联动jQuery写法

HTML结构

<!DOCTYPE html>
<html lang="en">
 
<head>
 
  <meta charset="UTF-8">
 
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>三级联动</title>
  <!-- <style>
    select {
      margin: 10px 0;
      padding: 5px;
      width: 200px;
    }
  </style> -->
 
  <script src="./js/jquery-3.7.1.js"></script>
</head>
 
<body>
  <select id="provinceSelect">
    <option value="">请选择省份</option>
  </select>
  <select id="citySelect">
    <option value="">请先选择省份</option>
  </select>
  <select id="countySelect">
    <option value="">请先选择省份</option>
  </select>
  <button onclick="showResult()">显示结果</button>
 
  <script src="./js/local.js"></script>
</body>
 
</html>

JS部分的jQuery写法

// 使用jQuery选择器获取省份、城市、区县选择器的DOM元素
let provinceSelect = $('#provinceSelect');
let citySelect = $('#citySelect');
let countySelect = $('#countySelect');
let data; // 用于存储省市县数据的变量
 
// 加载数据的函数
function loadData() {
    // 使用jQuery的ajax方法从JSON文件加载数据,假设文件路径为 'js/locals.json'
    $.ajax({
        // 设置请求的文件路径为 'js/locals.json'
        url: 'js/localss.json',
        // 设置请求的数据类型为JSON
        dataType: 'json',
        // 请求成功后调用success函数处理数据
        success: function (json) {
            // 将数据存储在全局变量data中
            data = json; 
            // 调用填充省份数据的函数
            populateProvinces(); 
        }
    });
}
 
// 填充省份数据的函数
function populateProvinces() {
    // 清空省份选择框
    provinceSelect.empty();
    // 添加默认选项
    provinceSelect.append($('<option value="">请选择省份</option>'));
    // 遍历数据中的每个省份,创建并添加一个选项元素
    $.each(data, function (index, province) {
        // 创建一个option元素,设置其value属性为省份的索引值,text属性为省份的名称
        provinceSelect.append($('<option></option>').text(province.province));
    });
}
 
// 根据选择的省份填充城市数据的函数
function populateCities(provinceIndex) {
    // 清空城市选择框和区县选择框
    citySelect.empty();
    // 添加默认选项
    citySelect.append($('<option value="">请选择城市</option>'));
    countySelect.empty();
    countySelect.append($('<option value="">请先选择城市</option>'));
 
    let cities = data[provinceIndex].cities;
    // 遍历城市数据,创建并添加选项元素
    $.each(cities, function (index, city) {
        citySelect.append($('<option></option>').text(city.city));
    });
}
 
// 根据选择的城市填充区县数据的函数
function populateCounties(provinceIndex, cityIndex) {
    // 清空区县选择框
    countySelect.empty();
    countySelect.append($('<option value="">请选择区县</option>'));
 
    let counties = data[provinceIndex].cities[cityIndex].counties;
    // 遍历区县数据,创建并添加选项元素
    $.each(counties, function (index, county) {
        countySelect.append($('<option></option>').text(county));
    });
}
 
// 当省份选择器的选项改变时,调用此函数
$('#provinceSelect').on('change', function () {
    let provinceIndex = $(this).prop('selectedIndex') - 1; // -1是因为第一个option是请选择省份
    if (provinceIndex >= 0) {
        populateCities(provinceIndex);
    } else {
        citySelect.empty();
        // 添加默认选项请选择城市
        citySelect.append($('<option value="">请选择城市</option>'));
        countySelect.empty();
        // 添加选项为请先选择区县
        countySelect.append($('<option value="">请选择区县</option>'));
    }
});
 
// 当城市选择器的选项改变时,调用此函数
$('#citySelect').on('change', function () {
    let provinceIndex = $('#provinceSelect').prop('selectedIndex') - 1;
    let cityIndex = $(this).prop('selectedIndex') - 1;
    if (cityIndex >= 0) {
        populateCounties(provinceIndex, cityIndex);
    } else {
        countySelect.empty();
        countySelect.append($('<option value="">请选择区县</option>'));
    }
});
 
// 显示选择结果的函数
function showResult() {
    // 获取省份、城市、区县的value值
    let province = $('#provinceSelect option:selected').text();
    let city = $('#citySelect option:selected').text();
    let county = $('#countySelect option:selected').text();
 
    if (province && city && county) {
        // 弹窗显示选择结果
        alert(`您选择的结果是:${province} - ${city} - ${county}`);
    }
}
 
// 页面加载完成后加载数据
$(document).ready(function () {
    // 调用加载数据的函数
    loadData();
});

带有详细注释家人们!

相关文章
|
2月前
|
JavaScript
鼠标事件(点击换色)分别使用js和jQuery代码实现
鼠标事件(点击换色)分别使用js和jQuery代码实现
32 1
|
2天前
|
JavaScript 前端开发
JavaScript 树状菜单栏jQuery写法
JavaScript 树状菜单栏jQuery写法
|
2天前
|
JavaScript 前端开发 API
【前端基础篇】JavaScript之jQuery介绍
【前端基础篇】JavaScript之jQuery介绍
13 0
|
2月前
|
JavaScript
分别用jquery和js修改页面元素
分别用jquery和js修改页面元素
29 2
|
2月前
|
JavaScript Java
点击按钮,向下添加目录。Java script+jQuery写法
点击按钮,向下添加目录。Java script+jQuery写法
18 1
|
2月前
|
JavaScript Java
分别使用js与jquery写 单击按钮时出现内容 点击删除按钮不会再向下出现
分别使用js与jquery写 单击按钮时出现内容 点击删除按钮不会再向下出现
18 1
|
2月前
|
JavaScript 前端开发 开发者
jQuery:JavaScript库的瑰宝
jQuery:JavaScript库的瑰宝
55 4
|
2月前
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
31 0
|
2月前
|
JavaScript Java
分别使用java script和jQuery添加页面元素
分别使用java script和jQuery添加页面元素
28 0
|
2月前
|
JavaScript 前端开发
Bootstrap‘s JavaScript requires jQuery
文章讨论了网页开发中因jQuery库未正确引入或顺序不当导致的三个常见错误,并指出解决这些问题需要确保jQuery在其他依赖它的脚本之前加载。