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();
});

带有详细注释家人们!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值