如何使用Jquery动态生成二级选项列表

以下是使用Jquery动态生成二级选项列表的完整攻略:

1. 准备工作

在开始使用Jquery动态生成二级选项列表之前,需要确保已经引入了Jquery的库文件,如果没有可以通过Jquery的官网下载相应的库文件。代码示例中引用的是jquery-3.6.0.min.js。

<script src="jquery-3.6.0.min.js"></script>

2. HTML结构

在HTML中需要定义两个select元素,一个是一级选项列表,另一个是二级选项列表,代码示例中,一级选项列表的id为province,二级选项列表的id为city。

<select id="province">
    <option value="" selected>请选择</option>
    <option value="北京">北京</option>
    <option value="上海">上海</option>
    <option value="广东">广东</option>
</select>

<select id="city">
    <option value="" selected>请选择</option>
</select>

3. Jquery代码

接下来我们就来看看使用Jquery动态生成二级选项列表的核心代码。代码中包含了click事件和ajax异步请求。

$(function(){
    $("#province").on("click",function(){
        $("#city").html("<option value='' selected>请选择</option>");
        $.ajax({
            type:"GET",
            url:"city.json",
            data:{
                province:$("#province").val()
            },
            dataType:"json",
            success:function(data){
                $.each(data,function(index,item){
                    $("#city").append("<option value='"+item+"'>"+item+"</option>");
                });
            }
        });
    });
})

代码解释:

  • $("#province").on("click", function(){}) 表示为省份下拉框绑定了一个click事件。
  • $("#city").html("<option value='' selected>请选择</option>"); 首先清空了城市下拉框中已选项。
  • $.ajax() 表示发起了一个异步请求。
  • type:"GET" 表示异步请求的类型为GET请求。

url:"city.json" 表示异步请求的地址,此处以获取城市数据的JSON文件为例。

data:{province:$("#province").val()} 表示异步请求所带的参数,即选中的省份。

dataType:"json" 表示返回的数据格式为JSON格式。

  • success:function(data){} 表示异步请求成功后执行的回调函数。
  • $.each(data,function(index,item){}) 表示循环遍历返回的城市数据。
  • $("#city").append("<option value='"+item+"'>"+item+"</option>"); 表示将返回的城市数据添加到城市下拉框中。

4. JSON数据

最后,提供一份JSON数据以供参考,我们称之为city.json。

{
    "北京":["东城区","西城区","朝阳区","海淀区","丰台区"],
    "上海":["黄浦区","徐汇区","长宁区","静安区","普陀区"],
    "广东":["广州市","深圳市","珠海市","汕头市","潮州市"]
}

在该JSON数据中,key为省份,value为该省份的城市列表。

5. 示例说明

以下是两条示例说明:

示例一

假设页面中有多个一级选项列表和对应的二级选项列表,那么可以使用以下代码实现动态生成多个二级选项列表。

$(function(){
    $("select[id^='province']").on("click",function(){
        var index = $("select[id^='province']").index(this);

        $("select[id^='city']").eq(index).html("<option value='' selected>请选择</option>");

        $.ajax({
            type:"GET",
            url:"city.json",
            data:{
                province:$(this).val()
            },
            dataType:"json",
            success:function(data){
                $.each(data,function(index,item){
                    $("select[id^='city']").eq(index).append("<option value='"+item+"'>"+item+"</option>");
                });
            }
        });
    });
})

代码解释:

  • $("select[id^='province']") 表示选中所有id以province开头的select元素。
  • var index = $("select[id^='province']").index(this); 表示获取当前一级选项列表的索引。
  • $("select[id^='city']").eq(index) 表示选中当前一级选项列表对应的二级选项列表元素,其索引为index。
  • $.each(data,function(index,item){$("select[id^='city']").eq(index).append("<option value='"+item+"'>"+item+"</option>");}); 表示使用each循环向每个二级选项列表中添加对应的城市选项。

示例二

假设需要一个多级联动选项列表,可以使用以下代码实现。

$(function(){
    $("select[id^='level']").on("click",function(){
        var index = $("select[id^='level']").index(this);

        // 当前选中的选项
        var value = $(this).val();

        // 清空下级选项列表
        for(var i=index+1; i<$("select[id^='level']").length; i++){
            $("select[id^='level']").eq(i).html("<option value='' selected>请选择</option>");
        }

        $.ajax({
            type:"GET",
            url:"data.json",
            data:{
                level:value,
                index:index.toString()
            },
            dataType:"json",
            success:function(data){
                if(index == $("select[id^='level']").length - 1){
                    alert("已选择到最后一级:"+value);
                }else{
                    var nextIndex = index + 1;
                    $("select[id^='level']").eq(nextIndex).append("<option value='' selected>请选择</option>");
                    $.each(data,function(index,item){
                        $("select[id^='level']").eq(nextIndex).append("<option value='"+item+"'>"+item+"</option>");
                    });
                }
            }
        });
    });
})

代码解释:

  • $("select[id^='level']") 表示选中所有id以level开头的select元素。
  • var index = $("select[id^='level']").index(this); 表示获取当前选项列表的索引。
  • var value = $(this).val(); 表示获取当前选中的选项的值。
  • for(var i=index+1; i<$("select[id^='level']").length; i++){$("select[id^='level']").eq(i).html("<option value='' selected>请选择</option>");} 表示清空下级选项列表。
  • url:"data.json" 表示异步请求的地址,此处以获取数据的JSON文件为例。
  • data:{level:value,index:index.toString()} 表示异步请求所带的参数,其中level为当前选中的选项,index为当前选项列表的索引,需要注意的是index需要转换为字符串形式。
  • if(index == $("select[id^='level']").length - 1){alert("已选择到最后一级:"+value);}else{} 表示如果当前选中的是最后一级,则弹出提示信息,否则继续向下级添加选项。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用Jquery动态生成二级选项列表 - Python技术站

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

相关文章

  • jQuery中children()方法用法实例

    jQuery中children()方法用法实例 在使用jQuery时,经常需要用到查找元素的功能。而jQuery提供的children()方法,可以用于查找匹配选择器的所有子元素。本文将介绍children()方法的用法和实例,并带有两个示例说明。 children()方法基本语法 children()方法的基本语法如下: $(selector).child…

    jquery 2023年5月27日
    00
  • jQWidgets jqxValidator onSuccess属性

    jQWidgets是一个功能强大的JavaScript UI框架,其中的jqxValidator组件可以用于验证表单输入是否合法。onSuccess属性是jqxValidator组件的一个回调函数,可以在验证成功时执行用户自定义逻辑。以下是详细的攻略: 什么是jqxValidator onSuccess属性? jqxValidator是一个表单验证组件,可以…

    jquery 2023年5月12日
    00
  • Jquery post传递数组方法实现思路及代码

    当我们需要用 jQuery 的 AJAX 请求发送数组数据时,可以使用 $.post() 方法,并将数组作为参数传递。下面是使用 Jquery post 传递数组的步骤及代码实现: 步骤1:准备数据 首先,需要准备一个包含要传递的数据的数组,下面是一个示例: var myArray = ["apple", "banana&quo…

    jquery 2023年5月28日
    00
  • jQuery Mobile Listview autodividers选项

    jQuery Mobile是一款基于HTML5和CSS3的开源JavaScript库,专为移动端设计而生。其中Listview是一种常见的数据展示方式,而autodividers则是Listview提供的一种分组显示内容的选项。 官方文档说明:https://api.jquerymobile.com/listview/#option-autodividers…

    jquery 2023年5月12日
    00
  • jQWidgets jqxGrid rtl属性

    jQWidgets jqxGrid rtl属性详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxGrid是其中之一,本文将详细介绍jqxGrid的rtl属性,包定义、语法和示例。 rtl属性的定义 jqxGrid的rtl属性用于设置网格是否从右到左显示。当rtl属性设置为true时,网格从右到左显示。 rtl属性的语…

    jquery 2023年5月10日
    00
  • jQWidgets jqxProgressBar valueChanged事件

    以下是关于 jQWidgets jqxProgressBar 组件中 valueChanged 事件的详细攻略。 jQWidgets jqxProgressBar valueChanged 事件 jQWidgets jqxProgressBar valueChanged 事件在进度条的值发生变化时触发。 语法 // 绑定 valueChanged 事件 $(…

    jquery 2023年5月12日
    00
  • jQWidgets jqxInput val() 方法

    jqxInput 是 jQWidgets 提供的一种输入框控件,用于在 Web 应用程序中创建输入框。val() 方法是 jqxInput 控件一个方法,用于获取或设置输入框的值。以下是 jqxInput 的 val() 方法的详细说明: 方法 val() 方法于获取或设置输入框的值。 // 获取 jqxInput 控件的值 var value = $(&q…

    jquery 2023年5月10日
    00
  • jQWidgets jqxTreeGrid selectionMode属性

    以下是关于 jQWidgets jqxTreeGrid 组件中 selectionMode 属性的详细攻略。 jQWidgets jqxTreeGrid selectionMode 属性 jQWidgets jqxTreeGrid 组件的 selectionMode 属性用于设置 TreeGrid 控件的选择模式。该属性默认值为 “singlerow”。 语…

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