bootstrap无限级分类 jq拓展 之前的无限级分类的封装版~

HTML部分

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>多级联动封装</title>
    <link href="./css/bootstrap.css" rel="stylesheet">
    <script src="./js/jquery.js"></script>
    <script src="./duoji.js"></script>
</head>
<body>

    <div class="row" style="margin:100px auto;">
        <div class="col-md-12" id="box1"></div>
    </div>
    <div class="row" style="margin:100px auto;">
        <div class="col-md-12" id="box2"></div>
    </div>

    <script>
        //容器名,name名(新生成的class名)
        $.select(‘box1‘,‘area1‘);
        $.select(‘box2‘,‘area2‘);
    </script>

</body>
</html>

duoji.js 代码

(function ($) {
    $.select=function(box,addInputClass){
        var i=new select;
        return i.init(box,addInputClass)
    }
    //声明多级联动 方法类
    var select = new Function();
    select.prototype={
        //定义类属性
        init:function(box,addInputClass){
            this.boxName=box;
            this.box=$(‘#‘+box);        //需要添加元素的容器
            this.eleClass=addInputClass;//每个事件的定位class
            this.first();//新建一个select获取
        },

        first:function(){
            //声明外部变量
            var boxName=this.boxName;
            var eleClass= this.eleClass;
            var box=this.box;
            var obj=this;

            $.get("http://127.0.0.1:83/areas", {id:‘0‘},
                function(data){
                var option="<option value=‘‘>请选择</option>";
                var list=data.data;
                for(var key in list){
                    option+="<option value=‘"+key+"‘>"+list[key].areaname+"</option>";
                }
                $(‘<div class="col-md-2 pl0"><select name="‘+eleClass+‘[]" num="0" pnode="‘+boxName+‘" cname="‘+eleClass+‘" class="form-control input-sm ‘+eleClass+‘">‘+option+‘</select></div>‘).appendTo(box).find(‘select‘).bind(‘change‘,function(){obj.change($(this))});

            },‘jsonp‘);
        },

        //change事件
        change:function(event){
            //声明
            var boxName=$(event).attr(‘pnode‘);  //获取触发事件者的pnode 

            var className=$(event).attr(‘cname‘);//获取触发事件者的cname

            var box =$("#"+boxName);            //获取所有插入盒子的对象

            var eleClass=$("."+className);        //获取所有Class所在元素组

            var num=eleClass.index($(event))+1; //获取num的值

            var id=$(event).val();                //获取ajax发送id的头

            var obj=this;                        //代表这个方法

            //清除 后续添加的新的元素
            eleClass.each(function(){
                //这里的this 代表eleClass 遍历时的单个对象
                //console.log($(this).attr(‘num‘));
                //console.log($().attr(‘num‘));
                if($(this).attr(‘num‘)>$(event).attr(‘num‘)){
                    $(this).parent().remove();
                }
            });
            /*
            console.log(boxName);
            console.log(className);
            console.log($(event));
            console.log($(event).val());
            */

            //循环ajax方法
            $.ajax({
              type: "get",
              dataType:"jsonp",
              url: "http://127.0.0.1:83/areas",
              data: {id:id},
              sync: false,//设置为同步
              success: function(data){
                //console.log(data);
                var list =data.data
                if(data.state===‘1‘){
                    var option="<option value=‘‘>请选择</option>";
                    for(var key in list){
                        option+="<option value=‘"+key+"‘>"+list[key].areaname+"</option>";
                    }
                    $(‘<div class="col-md-2 pl0"><select name="‘+className+‘[]" num="‘+num+‘" pnode="‘+boxName+‘" cname="‘+className+‘" class="form-control input-sm ‘+className+‘" >‘+option+‘</select></div>‘).appendTo(box).find(‘select‘).bind(‘change‘,function(){obj.change(this)});
                 }
              }
           });

        },

        //查询当前盒子中的信息
        log:function(){
            var boxName=$(event).attr(‘pnode‘);  //获取触发事件者的pnode
            var className=$(event).attr(‘cname‘);//获取触发事件者的cname

            var box =$("#"+boxName);            //获取所有插入盒子的对象
            var eleClass=$("."+className);        //获取所有Class所在元素组
            console.log("容器名:"+boxName+"\n 触发的class名:"+className);

        },

        //第一个select框获取信息
        getFirstElement:function(){
            var main=$(‘#‘+this.main);
            $.get("http://127.0.0.1:83/areas", {id:‘0‘},
                function(data){
                var option="<option value=‘‘>请选择</option>";
                var list=data.data;
                for(var key in list){
                    option+="<option value=‘"+key+"‘>"+list[key].areaname+"</option>";
                }
                main.html(option);
          },‘jsonp‘);
        }
    }

})(jQuery)

后端提供的数据类型:json

如果有数据:state=1

例子:

data:{
110000:{id: "110000", areaname: "北京", pid: "0", shortname: "北京", level: "1", position: "tr_0", sort: "1"}
120000:{id: "120000", areaname: "天津", pid: "0", shortname: "天津", level: "1", position: "tr_0", sort: "2"}
130000:{id: "130000", areaname: "河北省", pid: "0", shortname: "河北", level: "1", position: "tr_0", sort: "3"}
140000:{id: "140000", areaname: "山西省", pid: "0", shortname: "山西", level: "1", position: "tr_0", sort: "4"}
150000:{id: "150000", areaname: "内蒙古自治区", pid: "0", shortname: "内蒙古", level: "1", position: "tr_0", sort: "5"}
210000:{id: "210000", areaname: "辽宁省", pid: "0", shortname: "辽宁", level: "1", position: "tr_0", sort: "6"}
220000:{id: "220000", areaname: "吉林省", pid: "0", shortname: "吉林", level: "1", position: "tr_0", sort: "7"}
230000:{id: "230000", areaname: "黑龙江省", pid: "0", shortname: "黑龙江", level: "1", position: "tr_0", sort: "8"}
310000:{id: "310000", areaname: "上海", pid: "0", shortname: "上海", level: "1", position: "tr_0", sort: "9"}
320000:{id: "320000", areaname: "江苏省", pid: "0", shortname: "江苏", level: "1", position: "tr_0", sort: "10"}
330000:{id: "330000", areaname: "浙江省", pid: "0", shortname: "浙江", level: "1", position: "tr_0", sort: "11"}
.....
},
state:"1"

如果没有数据 state=0

例子:

state:"0"
时间: 2025-01-12 15:15:58

bootstrap无限级分类 jq拓展 之前的无限级分类的封装版~的相关文章

OC的类别(分类)和拓展

一.分类: 1.适用范围 当你已经封装好了一个类(也可能是系统类.第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类,只需要给你原来的类增加一个分类. 将一个大型的类拆分成不同的分类,在不同分类中实现类别声明的方法,这样可以将一个类的实现写到多个.m文件中,方便管理和协同开发. 分类中的方法可以只声明,不实现,所以在协议不支持可选方法的时候(协议现在已经支持可选方法),通常把分类作为非正式协议使用. 2.语法格式 文件中的语法: 1 @interf

Spark ML下实现的多分类adaboost+naivebayes算法在文本分类上的应用

1. Naive Bayes算法 朴素贝叶斯算法算是生成模型中一个最经典的分类算法之一了,常用的有Bernoulli和Multinomial两种.在文本分类上经常会用到这两种方法.在词袋模型中,对于一篇文档$d$中出现的词$w_0,w_1,...,w_n$, 这篇文章被分类为$c$的概率为$$p(c|w_0,w_1,...,w_n) = \frac{p(c,w_0,w_1,...,w_n)}{p(w_0,w_1,...,w_n)} = \frac{p(w_0,w_1,...,w_n|c)*p(c

多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)

之前建立了一个SVM-based Ordinal regression模型,一种特殊的多分类模型,就想通过可视化的方式展示模型分类的效果,对各个分类区域用不同颜色表示.可是,也看了很多代码,但基本都是展示二分类,当扩展成多分类时就会出现问题,所以我的论文最后就只好画了boundary的图了.今天在研究Random Forest时,找到了下面的demo的MATLAB代码,该代码很好的实现了各分类区域的颜色填充,效果非常漂亮. 下面是一个Demo代码:Demo.m %% generate data

ECSHOP分类页面筛选功能(按分类下子分类和品牌筛选)

其实分类页面里面本来就有相关的品牌.属性.分类的筛选功能在category.php和模板加上相应的功能即可 1.读出当前分类的所有下级分类 $chlidren_category = $GLOBALS['db']->getALl('SELECT cat_id,cat_name FROM ' . $GLOBALS['ecs']->table('category') ." WHERE parent_id = '$cat_id' and is_show=1"); $category

foreach、count、explode(对无限级分类的语法注释-显示无限级效果)

foreach ($array as $key => $value) foreach仅能用于数组. 每次循环中,当前单元的键名也会在每次循环中被赋给变量$key. 当前单元的值被赋给$value. <!DOCTYPE html> <html> <body> <?php $age=array("Bill"=>"35","Steve"=>"37","Peter&

问答项目---删除分类的时删除其子分类

递归获取所有的子分类的ID: //递归获取所有的子分类的ID function get_all_child($array,$id){ $arr = array(); foreach($array as $v){ if($v['pid'] == $id){ $arr[] = $v['id']; $arr = array_merge($arr,get_all_child($array,$v['id'])); }; }; return $arr; } 删除分类及其子分类: //删除分类 public

BootStrap最常用的几个插件(V3.3.0版)

1.标签页 <!-- Nav tabs --> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="active"><a href="#home" role="tab" data-toggle="tab">Home</a&g

php利用递归函数实现无限级分类

相信很多学php的很多小伙伴都会尝试做一个网上商城作为提升自己技术的一种途径.各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了. 什么是无限级分类? 无限级分类是一种分类技巧,例如部门组织,文章分类,学科分类等常用到无限级分类,将其简单理解成分类就好了.其实我们仔细想一下,生活中的分类简直太多了,衣服可以分为男装和女装,也可以分为上衣和裤子,也可以根据年龄段分类.分类无处不在,分类显得“无限”.我这里就不说无限分类的必要性了. 无限级分类原理简介 无限分类看

自制无限级分类算法。

JavaScript版: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> var arr = { '1' : 0, '2' : 1,