3kb jQuery代码搞定各种树形选择的实现方法
来源: 阅读:789 次 日期:2016-06-20 15:04:17
温馨提示: 小编为您整理了“3kb jQuery代码搞定各种树形选择的实现方法”,方便广大网友查阅!

下面小编就为大家带来一篇3kb jQuery代码搞定各种树形选择的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。

自制Jquery树形选择插件.

对付各种树形选择(省市,分类..)90行Jquery代码搞定,少说废话直接上插件代码。稍后介绍使用说明。是之前写的一个插件的精简版。

1.Jquery插件代码

(function (j) {

  j.fn.attrs = function (option) {

    var root = this, data = [];

    //默认参数

    var def = { url: '/ajax/GetSort/', str: root.attr("str") || '0', handel: function (v) {

      return "<option value=" + v.id + ">" + v.type + "</option>"

    }, path: root.attr("val") || 0, sChar: ',', change: function (v) { }

    };

    //参数合并

    def = j.extend({}, def, option);

    //是否初始化

    ispath() ? init() : create(def.str);

    //请求分类并选中

    function create(id, o, v) {

      if (!id || parseInt(id) == -1)

        return o.nextAll().remove();

      //创建select

      var select = j("<select></select>").hide();

      _b(select);

      //添加到容器内

      if (o) o.nextAll().remove();

      root.append(select);

      //发起Ajax请求

      j.ajax({

        type: "GET",

        url: def.url,

        data: { id: id },

        dataType: "json",

        cache: true,

        success: function (json) {

          datainit(select, json, v);

        }

      })

    }

    function datainit(select, data, v) {

      _c(select, data).val(v || -1);

      if (select.children("option").length <= 1) {

        select.remove();

        return;

      }

      else

        select.removeAttr("style");

    }

    //判断是否符合格式

    function ispath() {

      return def.path && /^(\d{1,},)*\d{1,}$/.test(def.path) && def.path != '0,0,0';

    }

    //创建值

    function _v() {

      var v = new Array(), vtext = new Array();

      v.push(0);

      root.children("select").each(function () {

        if (j(this).val() > 0) {

          v.push(j(this).val());

          vtext.push(j(this).children("option[selected]").text())

        }

      })

      root.attr("val", v.join(','));

      root.attr("vtext", vtext.join(">"));

      def.change(v);

    }

    //初始化

    function init() {

      if (ispath()) {

        var list = def.path.split(def.sChar);

        for (var i in list) {

          create(list[i], null, list[++i]);

        }

        return;

      }

      alert("Error:分类出错!")

    }

    //绑定事件

    function _b(select) {

      select.bind("change", function () {

        create(j(this).val(), j(this));

        _v();

      })

    }

    //创建下拉框

    function _c(select, data) {

      select.append(j("<option value='-1'>==请选择==</option>"));

      for (var i = 0; i < data.length; i++) {

        select.append(j(def.handel(data[i])));

      }

      return select;

    }

  }

})($)

名单

名单

4.如何使用

<div id="attr"></div>

<script type="text/javascript">

(function($){

$("#attr").attr(

 {

 url: '/ajax/GetSort/',//ajax 获取的URL 服务器返回的是Json 数据

 str: root.attr("str") || '0',//获取初始化的分类path.例如:23,45,90。在编辑的情况下能正确还原

 handel: function (v) {//数据处理的回调函数,表明如何对后台数据进行解析。 如[{id:32,type:"分类"}]

   return "<option value=" + v.id + ">" + v.type + "</option>"

  },

 path: root.attr("val") || 0,

 sChar: ',',//path 拆分的字符如果,path 为23|45|90 则 ‘|'

 change: function (v) { }//选择框修改处理事件

  };

);

})(jQuery)

</script>

以上这篇3kb jQuery代码搞定各种树形选择的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map