前端无限极联动的实现

前端无限极联动的实现

表设计

id:id

name:分类名

fathId:父级id

在表设计中用一个父级ID作为关联

后台返回的json格式:(默认第一级的父级id为0)
{“id”:1,“name”:“女装”,“fathId”:0,“shopId”:1,“info”:""}

html:

<div id="sp">
	
</div>

js代码:

$(function () {
        next(0)
    })
//list:查询出来的数据
//id:遍历的id(父级id)
function Liancha(list,id) {
    var List = new Array();
    for(var i = 0 ; i < list.length ; i++){
        var atm = list[i];
        if(atm.fathId == id){
            List.push(list[i])
        }
    }
    return List;
}

/**
 * 无限联动
 * @param id 父级的id
 * post():封装的ajax(第一位参数是发送给后台的data,第二位参数是请求地址,第三四位是回调的succes和error)
 *   //post请求方法
 *	 function post(data,url,success,error) {
 *	    // 全局替换
 *	    var text = JSON.stringify (data).replace(/null/g,'""');
 *	    $.ajax({
 *	        data: text,
 *	        url: HTTP+url,
 *	        type:'post',
 *	        crossDomain: true,
 *	        dataType:'text',
 *	        contentType: "application/json; charset=utf-8",
 *	        xhrFields: {withCredentials: true},
 *	        success: function (data) {
 *	          data =  getStr(data);
 *	            if (data.status == 200) {
 *	                if(success != null){
 *	                    success(data)
 *	                }
 *	            }else{
 *	                if(error != null){
 *	                    error(data.msg)
 *	                }
 *	            }
 *	        },
 *	        error: function (data) {
 *	            if(error != null){
 *	                error(data)
 *	            }
 *	            alert("请求失败");
 *	        },
 *	        complete: function () {
 *	
 *	        }
 *	
 *	    });
 *	
 *	}
 */
function next(id){
    post("", SELECTBYFENLEIID+"?shopId="+getInfo, function (data) {
        //转成Json对象
        result = eval(data.data);
        var List = Liancha(result,id);
        //判断如果查出来的数据小于0直接return
        if (List.length<=0){
            return
        }
        var first = "<select style='width: 100px' class='form-control' id='select_" + id +"'>";
        var option = "<option>请输入</option>"
        var cancel ="";
        for (var i = 0; i < List.length; i++) {
            cancel = cancel + "<option value="+List[i].id+">"+List[i].name+"</option>";
        }
        var last  ='</select>';
        $("#sp").append(first + option + cancel + last);
        $("#select_"+id).change(function (data) {
            //获取分类id
            var clas = $("#select_" + id).val()
            //删除子级的数据
            deleteItem(id);
            //递归
            next( clas);
        });


    },function (data) {

    })

}
/**
 * 删除儿子
 * @param id 老子的id
 */
function deleteItem(id) {
    var items = Liancha(result,id);
    if (items.length<=0){
        return
    }
    for (var i =0; i< items.length;i++){
        var item = $("#select_" +items[i].id);
        if (item!=null){
            deleteItem(items[i].id);
            item.remove();

        }
    }
}

图片效果:
效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值