当前位置: 首页 > 编程笔记 >

3kb jQuery代码搞定各种树形选择的实现方法

琴琪
2023-03-14
本文向大家介绍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;
    }
  }
})($)

2.对付省市选择

3.对付各种让你蛋疼的无限级选择

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代码搞定各种树形选择的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍各种选择框jQuery的选中方法(实例讲解),包括了各种选择框jQuery的选中方法(实例讲解)的使用技巧和注意事项,需要的朋友参考一下 select下拉列表的选中方法是:$("slect option:eq(1)").attr("selected",true);//选中第二个option chekbox的选中方法:$("[value=check1"]:checkbox).attr(

  • 本文向大家介绍java实现遍历树形菜单两种实现代码分享,包括了java实现遍历树形菜单两种实现代码分享的使用技巧和注意事项,需要的朋友参考一下 文本主要向大家分享了java实现遍历树形菜单的实例代码,具体如下。 OpenSessionView实现: TreeAction实现 总结 以上就是本文关于java实现遍历树形菜单两种实现代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

  • 本文向大家介绍vue 实现的树形菜的实例代码,包括了vue 实现的树形菜的实例代码的使用技巧和注意事项,需要的朋友参考一下 下面一段代码给大家介绍vue 实现的树形菜单功能,具体代码如下所示: 总结 以上所述是小编给大家介绍的vue 实现的树形菜的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!

  • 本文向大家介绍Android 绘制多级树形选择列表实例代码,包括了Android 绘制多级树形选择列表实例代码的使用技巧和注意事项,需要的朋友参考一下 一、概述 前段时间有个项目的需要在Android端显示一个复选的多层树形控件,主要展示一个公司的组织架构,类似总部下面有各个部门,部门之下是组和员工等。另外需要加上展开与回收部门详情、关闭部分已开展的布局、勾选等功能。 效果图如下:   二、思路分

  • 本文向大家介绍Android实现多级树形选择列表,包括了Android实现多级树形选择列表的使用技巧和注意事项,需要的朋友参考一下 项目中有多个地方要用到多级列表的菜单,最开始我用的是ExpandableListView,但问题是ExpandableListView只支持两级列表,于是我就用ExpandableListView嵌套ExpandableListView,但非常麻烦,而且关键的是具体分

  • 我现在正在看罗伯特·塞奇威克的算法书。在这本书中,我试图理解方法在二叉搜索树中的实现。作者用BST实现了一个符号表。作者描述方法如下: 假设我们寻找秩为k的密钥(该密钥使得BST中的其他密钥精确地k个更小)。如果左子树中的键数t大于k,则我们在左子树中(递归地)寻找秩为k的键;如果t等于k,我们返回根处的键;如果t小于k,我们在右子树中递归地寻找秩为k-t-1的键。像往常一样,这个de-scrip