zoukankan      html  css  js  c++  java
  • 二级联动菜单,简单实现

    /**
     * jQuery Linkage Menu
     *
     * Copyright 2014, sunyingyuan
     * QQ: 1586383022
     * Email: yingyuansun@163.com
     *
     * 二级联动菜单
     * 目前只能支持二级联动,并且只能通过AJAX实时从后台取数据,如果需要前台静态数据,请联系作者,暂时没有需求,有时间再添加
     * 简单使用方法:
     * HTML代码:
     * <select id="selectOne">
     *      <option>一级菜单默认显示名称</option>
     * </select>
     * <select id="selectTwo">
     *      <option>二级菜单默认显示名称</option>
     * </select>
     *
     * JS代码:
     * 引入jQuery和jquery.linkageMenu.js后
     * $(function(){
     *          $.linkageMenu({
     *              'selectOneId': 'selectOne',//一级菜单Id
     *              'selectTwoId': 'selectTwo',//二级菜单Id
     *              'selectOneVal': '{"key1":"value1", "key2":"value2"}',//一级菜单option值
     *              'paramName' : 'selectOneValue',//请求url的参数key
     *              'getSelectTwoValUrl': 'http://localhost:3000/users'//通过一级菜单的value获取二级菜单的值的url
     *          });
     * });
     */
    (function ($) {
        $.linkageMenu = function (options) {
            //默认参数
            var settings = $.extend({
                'selectOneId': 'selectOne',//一级菜单Id
                'selectTwoId': 'selectTwo',//二级菜单Id
                'selectOneVal': '',//一级菜单option值
                'selectTwoVal': '{"key1":"value2","key2":"value2"}',//预留字段,供插件以后扩展
                'paramName' : 'selectOneValue',//请求url的参数key
                'getSelectTwoValUrl': ''//得到二级菜单的value的url
            }, options);
            var $s1 = $("#" + settings.selectOneId);
            var $s2 = $("#" + settings.selectTwoId);
            var selectOneValJSON = $.parseJSON(settings.selectOneVal);
            //alert(selectOneValJSON.key1);
            //JSON.parse(options.selectOneVal); //由JSON字符串转换为JSON对象
            //一级菜单初始化
            $.each(selectOneValJSON, function (key, val) {
                appendOptionTo($s1, key, val);
            });
            //一级菜单改变的时候,二级菜单的变化
            $s1.change(function () {
                $s2.html("");
                var s1SelectedVal = $s1.val();
                //ajax异步获取二级菜单数据
                $.ajax({
                    type: "GET",
                    url: settings.getSelectTwoValUrl,
                    data: settings.paramName + "=" + s1SelectedVal,
                    success: function (select2Val) {
                        var selectTwoValJSON = $.parseJSON(select2Val);
                        $.each(selectTwoValJSON, function (key, val) {
                            appendOptionTo($s2, key, val);
                        });
                    }
                });
            });
        }
    })(jQuery);
    /**
     * Tools Methods : appendOptionTo
     * @param $obj : The selected object jquery,一般为需要添加option的select对象
     * @param key : option的key,一般为设置的Id
     * @param val ; option的val,同时一般也作为显示的值,在这里我们默认为显示的value和option的value是同一个值
     * @param defaultSelectVal ; 设置默认选中的值,一般为初始化的情况下,默认选中的value
     */
    function appendOptionTo($obj, key, val, defaultSelectVal) {
        var $opt = $("<option>").text(key).val(val);
        if (val == defaultSelectVal) {
            $opt.attr("selected", "selected");
        }
        $opt.appendTo($obj);
    }

  • 相关阅读:
    JAVA_SWT 事件的四种写法
    JAVA静态数据的初始化;
    Centos 安装freesurfer fsl matlab 等软件---转自网络
    ROC和AUC————摘在网络
    转自网络用LIBSVM进行回归预测的粗浅认识————————作者师梦
    fmri格式相关简介————转自网络
    fMRI数据分析处理原理及方法————转自网络
    装机、做系统必备:秒懂MBR和GPT分区表____转载网络
    【转】Thymeleaf自动在URL后加了;jsessionid=的问题
    LeetCode (85): Maximal Rectangle [含84题分析]
  • 原文地址:https://www.cnblogs.com/sunyingyuan/p/3686192.html
Copyright © 2011-2022 走看看