基于jquery实现省市联动特效

基于jQuery实现省市联动特效攻略

介绍

在网页开发过程中,我们常常需要实现省市联动的功能,即在省份下拉列表的选择影响城市下拉列表的选项。本攻略将详细讲解如何基于jQuery实现省市联动特效。

步骤

  1. 创建HTML页面

首先需要在HTML页面中创建两个下拉列表,分别用于选择省份和城市。代码如下:

<select id="province">
  <option value="">请选择</option>
  <option value="1">北京</option>
  <option value="2">上海</option>
  <option value="3">广东</option>
  <!-- more options... -->
</select>

<select id="city">
  <option value="">请选择</option>
</select>
  1. 加载jQuery库

为了使用jQuery,需要先加载jQuery库文件。可以通过以下代码将jQuery库文件引入到HTML页面中:

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  1. 编写jQuery代码

接下来需要编写jQuery代码,实现省份选择对城市下拉列表的影响。代码见下:

// 当省份选择框被改变时
$("#province").change(function() {
  // 获取所选省份的ID
  var provinceId = $(this).val();
  // 如果省份未选择,清空城市下拉列表
  if (provinceId === "") {
    $("#city").empty();
    return;
  }
  // 发送异步请求获取该省份的城市列表数据
  $.get("/getCityList?provinceId=" + provinceId, function(data) {
    // 按照返回数据填充城市下拉列表
    $("#city").empty();
    for (var i = 0; i < data.length; i++) {
      var city = data[i];
      var option = "<option value='" + city.id + "'>" + city.name + "</option>";
      $("#city").append(option);
    }
  });
});

以上代码用到了jQuery的异步请求方法get(),通过向服务器发送请求获取对应省份的城市列表数据。返回的数据格式为JSON,需要按照规定的格式进行解析和处理。

示例

下面提供两个示例,详细说明如何将本攻略中的代码应用到具体的网页中。

示例一:使用本地JSON数据源

考虑到服务器请求的数据源可能不稳定,我们可以先在本地创建一个JSON格式的数据源,用于测试。首先创建一个名为data.json的文件,用于存放测试数据,内容如下:

[
  {
    "id": 1,
    "name": "北京",
    "cities": [
      {"id": 101, "name": "东城区"},
      {"id": 102, "name": "西城区"},
      {"id": 103, "name": "朝阳区"},
      {"id": 104, "name": "海淀区"},
      {"id": 105, "name": "丰台区"},
      {"id": 106, "name": "石景山区"},
      {"id": 107, "name": "通州区"},
      {"id": 108, "name": "顺义区"},
      {"id": 109, "name": "昌平区"},
      {"id": 110, "name": "大兴区"},
      {"id": 111, "name": "怀柔区"},
      {"id": 112, "name": "平谷区"}
    ]
  },
  {
    "id": 2,
    "name": "上海",
    "cities": [
      {"id": 201, "name": "黄浦区"},
      {"id": 202, "name": "徐汇区"},
      {"id": 203, "name": "长宁区"},
      {"id": 204, "name": "静安区"},
      {"id": 205, "name": "普陀区"},
      {"id": 206, "name": "虹口区"},
      {"id": 207, "name": "杨浦区"},
      {"id": 208, "name": "闵行区"},
      {"id": 209, "name": "宝山区"},
      {"id": 210, "name": "嘉定区"},
      {"id": 211, "name": "浦东新区"},
      {"id": 212, "name": "金山区"},
      {"id": 213, "name": "松江区"},
      {"id": 214, "name": "青浦区"},
      {"id": 215, "name": "奉贤区"}
    ]
  },
  {
    "id": 3,
    "name": "广东",
    "cities": [
      {"id": 301, "name": "广州市"},
      {"id": 302, "name": "深圳市"},
      {"id": 303, "name": "珠海市"},
      {"id": 304, "name": "汕头市"},
      ...
    ]
  }
]

在HTML页面中引入上面的两个下拉列表和jQuery库文件,然后将get()请求的路由改为/data.json:

$("#province").change(function() {
  var provinceId = $(this).val();
  if (provinceId === "") {
    $("#city").empty();
    return;
  }
  $.get("/data.json", function(data) {
    var cities = data[provinceId - 1].cities;
    $("#city").empty();
    for (var i = 0; i < cities.length; i++) {
      var city = cities[i];
      var option = "<option value='" + city.id + "'>" + city.name + "</option>";
      $("#city").append(option);
    }
  });
});

示例二:动态请求服务器数据源

在实际项目中,数据源通常存储在服务器端,需要通过ajax请求获取。下面提供一个示例,可用于请求某个在线的省市列表数据源。

考虑到网速可能会影响数据获取的速度,我们需要在请求过程中加入一些提示信息,让用户明白数据正在加载中,不会感到困惑。我们可以在下拉列表中预设一个“正在加载中”的选项,用户点击后就可以看到请求数据的进度。

首先修改HTML页面,添加“正在加载中”选项:

<select id="province">
  <option value="">请选择</option>
  <option value="1">北京</option>
  <option value="2">上海</option>
  <option value="3">广东</option>
  <!-- more options... -->
</select>

<select id="city">
  <option value="">请选择</option>
  <option id="loading" disabled hidden>正在加载中...</option>
</select>

然后在jQuery代码中加入“加载中”状态的处理代码:

$("#province").change(function() {
  var provinceId = $(this).val();
  if (provinceId === "") {
    $("#city").empty();
    return;
  }
  $("#city").empty().append('<option id="loading" disabled selected>正在加载中...</option>');
  $.get("/getCityList?provinceId=" + provinceId, function(data) {
    $("#city").empty();
    for (var i = 0; i < data.length; i++) {
      var city = data[i];
      var option = "<option value='" + city.id + "'>" + city.name + "</option>";
      $("#city").append(option);
    }
  });
});

以上代码加入了一个“加载中”选项,在数据获取成功后再将其删除。同时,需要将下拉列表的第一个选项设置为“disabled selected”,用户无法选择该选项,而是强制选择可以选中的选项。

结论

通过本攻略,我们可以很方便地实现省市联动特效。通过以上两个示例,你已经明白如何将代码应用到具体的网页项目中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于jquery实现省市联动特效 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 深入分析jQuery.one() 函数

    深入分析jQuery.one() 函数 一、jQuery.one() 函数的作用 jQuery.one() 函数绑定一个只能被执行一次的事件处理函数。当绑定的事件被触发时,该事件处理函数会立刻被解绑。可以用来确保一个回调函数只会被执行一次,在一些场景下非常有用。 二、jQuery.one() 函数的用法 jQuery.one() 函数的语法如下: $(sel…

    jquery 2023年5月28日
    00
  • jQuery的remove()方法使用详解

    当你需要从DOM中移除一个元素时,可以使用jQuery的remove()方法。这篇文章将详细讲解remove()方法的用法,包括语法、参数和示例说明。 语法 jQuery的remove()方法移除指定的元素或元素集合。 $(selector).remove(); 参数 remove()方法不需要任何参数。它根据选择器选定的元素,移除掉它们。 示例说明 下面是…

    jquery 2023年5月28日
    00
  • jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象

    jQuery form插件是一个非常强大的表单提交插件,可以使表单的提交和验证变得非常简单和优雅。其中,ajaxForm()和ajaxSubmit()是该插件最强大的两个方法之一,具有非常多的可选参数项,可以满足绝大多数的需求。 ajaxForm()方法 beforeSubmit:该函数在表单提交前被调用,可以在这里进行表单的验证和数据的处理。如果该函数返回…

    jquery 2023年5月27日
    00
  • jQuery绑定事件方法及区别(bind,click,on,live,one)

    jQuery是一款广泛使用的JavaScript库,它提供了许多方便、高效和跨浏览器的操作DOM元素的方法。在jQuery中,事件绑定是一个非常重要且常见的操作,它可以让开发者通过一个简单的操作来实现对元素的各种响应。 在jQuery中,常用的事件绑定方法包括:bind、click、on、live和one。各个方法之间的区别如下: bind:在指定元素上绑定…

    jquery 2023年5月27日
    00
  • 浅谈jQuery 选择器和dom操作

    浅谈jQuery选择器和DOM操作 jQuery 是一款现代 JavaScript 库,具有出色的DOM操作和选择器。使用jQuery,开发人员可以简化开发过程,减少编写的代码量,从而提高开发效率和代码质量。 选择器 在jQuery中,选择器是用来获取文档中某些特定元素的一种方法。我们可以通过它来获取、遍历、操作文档中任何元素。选择器支持大多数 CSS1 至…

    jquery 2023年5月28日
    00
  • 如何使用jQuery Mobile创建一个星期输入

    下面是如何使用jQuery Mobile创建一个星期输入的完整攻略: 1. 准备工作 在使用jQuery Mobile创建一个星期输入之前,需要准备以下的工作: 引入jQuery和jQuery Mobile库; 设置页面的meta标签,使页面适配移动设备; 创建一个基础的html骨架,包括header、content、footer等元素。 在完成这些准备工作…

    jquery 2023年5月12日
    00
  • JQuery 无废话系列教程(二) jquery实战篇上

    《JQuery 无废话系列教程(二) jquery实战篇上》主要介绍了如何通过JQuery实现一些常见的网页交互效果。以下是完整攻略: 一、动态改变HTML内容 1.1 text() 方法 作用:设置或返回所选元素的文本内容。 示例: <button id="btn">点击我</button> <script…

    jquery 2023年5月19日
    00
  • jQWidgets jqxListBox focus()方法

    jQWidgets jqxListBox focus()方法详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxListBox是其中之一。本文将详细介绍jqxListBox的focus()方法,包括定义、语法和示例。 focus()方法的定义 jqxListBox的focus()方法用于将焦点设置到列表框上。当列表框获…

    jquery 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部