/** * 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); }