3kb jQuery代码搞定各种树形选择。

自制Jquery树形选择插件.

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

1.Jquery插件代码

/*
* 2012年11月30日14:31:14
* haizi
*/
(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>

时间: 2024-08-02 02:41:17

3kb jQuery代码搞定各种树形选择。的相关文章

一行jQuery代码搞定checkbox 全选和全不选

在网站建设中:让复选框全部选中和全部取消是比较常用的:下面就介绍如何用一句话搞定全选功能: 其实很简单:那就是使用盘点jQuery弃用的函数这篇文章中最后一段代码: 好了,我要介绍的方法讲完了: 好吧,别砸鸡蛋:我是开个玩笑:代码在下面 JavaScript部分: function checkAll(obj){     $("#box input[type='checkbox']").prop('checked', $(obj).prop('checked')); } html部分:

一段jquery代码搞定多个tab效果

现在的页面上几乎都要tab切换甚至不止一个,早有想法尝试用一段代码控制所有tab的方法,自己尝试了一下.里面有几个要点抓住就好了. <style>            .wrap{                width:100%;                height:800px;                position: relative;            }            .wrap2{                width:100%;        

10行代码搞定移动web端自定义tap事件

发发牢骚 移动web端里摸爬滚打这么久踩了不少坑,有一定移动web端经验的同学一定被click困扰过.我也不列外.一路走来被虐的不行,fastclick.touchend.iscroll什么的都用过,各有优劣,都不能一步到位.最后实在是被逼无奈,翻阅了不少资料,自定义了一个tap. 效果预览 废话不多说先上效果 移动端预览 一探真假 真的只有10行 插件是基于jQuery的,上代码. //自定义tap $(document).on("touchstart", function(e) {

180行ruby代码搞定游戏2048

最今在玩2048这款小游戏,游戏逻辑简单,非常适合我这种对于游戏新入行的人来实现逻辑.于是选择了最拿手的ruby语言来实现这款小游戏的主要逻辑.还是挺简单的,加起来4小时左右搞定. 上代码: require 'optparse' module Help HELP_TEXT =<<HELP press buttons for move l => move to left r => move to right t => move to top b => move to bo

用最简短的代码搞定数组去重

用最简短的代码搞定数组去重,欢迎指正不足之处 /* let numbers = [3, 8, 10, 18, 20]; let num_test = [4, 5, 10, 18, 20];*/ const arr_num = [3, 8, 10, 18, 20].concat([4, 5, 10, 18, 20]); let res =[]; $.each(arr_num,(item, index)=> { res.length==0 ||($.inArray(index,res)===-1)

史上最牛逼的javascript俄罗斯方块,63行代码搞定啊

<!doctype html><html><head></head><body> <div id="box" style="width:252px;font:25px/25px 宋体;background:#000;color:#9f9;border:#999 20px ridge;text-shadow:2px 3px 1px #0f0;"></div> <script>

两行代码搞定MFC清屏功能

MFC清除屏幕功能 不少人在使用MFC显示图像都遇到过解决清除屏幕的问题,网上有不少解决方案,但是这些方案都不是很简单,最近本文也遇到了同样的问题,因此对MFC的显示原理进行了深入的研究,找到了最简单的解决方案: (1)获取控件的句柄 (2)调用showWidnow(FALSE). (3)调用showWindow(TRUE); 两句简单的代码轻松搞定MFC清除屏幕功能! 代码如下: void CClearScreenMFCDlg::OnBnClickedLoadImage() { // TODO

Java一行代码搞定两个数互换

提到两个数互换,首先想到的应该是如何不引入第三个数实现,当然也有很多方法. 想到个有趣的事就是怎么用一行代码搞定互换,其实也不难. 先来两种小学生写法: a = a + b - (b = a); a = a * b / (b = a); 以上两句结果一样,就是把a,b值互换. 还有一种无赖写法: a = b + (b = a) * 0; 稍高端的写法是: a = a ^ b ^ (b = a); 这个原理就是一个数异或另一个数两次值不变.

IOS 一句代码搞定启动引导页

前言引导页,一个酷炫的页面,自从微博用了之后一下就火起来了,对于现在来说一个app如果没有引导页似乎总显那么不接地气,那么为了让我们的app也“高大上”一次,我写了一个demo来实现启动引导页的实现,鉴于我的强迫症,使用起来也是尽可能的简单才算罢休,这不,一句代码就搞定了,而且支持版本更新后显示新的引导页,先看效果: LaunchIntroduction.gif demo中封装了两个方法以供调用,一个是在滚动视图的最后一个页面带有进入按钮,一个是不带按钮,直接滚动就可隐藏引导页. 特点1.使用简