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


Posted in Javascript onJune 10, 2016

自制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.对付省市选择

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

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

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

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

Javascript 相关文章推荐
js返回上一页并刷新代码整理
Dec 21 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Oct 24 Javascript
判断javascript的数据类型(示例代码)
Dec 11 Javascript
jQuery中innerWidth()方法用法实例
Jan 19 Javascript
Javascript实现Array和String互转换的方法
Dec 21 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
Oct 14 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
May 17 jQuery
Vue0.1的过滤代码如何添加到Vue2.0直接使用
Aug 23 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
Dec 19 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
Dec 05 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
Nov 26 Javascript
关于网页中的无缝滚动的js代码
Jun 09 #Javascript
Document.body.scrollTop的值总为零的快速解决办法
Jun 09 #Javascript
JavaScript事件学习小结(三)js事件对象
Jun 09 #Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 #Javascript
JavaScript事件学习小结(一)事件流
Jun 09 #Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
Jun 09 #Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
Jun 09 #Javascript
You might like
论建造顺序的重要性
2020/03/04 星际争霸
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
python实用代码片段收集贴
2015/06/03 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
给排水工程师岗位职责
2013/11/21 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
四查四看剖析材料
2014/02/14 职场文书
简历里的自我评价范文
2014/02/24 职场文书
大学毕业生推荐信
2014/07/09 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
2014年党支部工作总结
2014/11/13 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
中学音乐课教学反思
2016/02/18 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
python turtle绘图命令及案例
2021/11/23 Python
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS