动态生成树形结构(联级) 面包屑 递归

前言

动态生成树形结构(联级) 面包屑 递归


提示:以下是本篇文章正文内容,下面案例可供参考

1.html

代码如下(示例):

 <div class="xuanze">
           <button class="btn">选择型号</button>
           <div class="bread">选择型号</div>
           <ul id="xinghao" class="xing"></ul>
  </div>

2.js

代码如下(示例):


$(function () {
    function ss(iy) {

        $.ajax({
            type: "get",
            url: "../js/dome.json",
            dataTypr: "json",
            success: function (res) {
                dataList(res.data)
            }
        })
        var obj = [];
        function dataList(res) {
            var res = res;
            var result = recurz(res);
            function recurz(dataList) {
                for (var i = 0; i < dataList.length; i++) {
                    result = dataList[i];
                    obj.push({
                        name: result.name,
                        id: result.id,
                        pid: result.pid,
                        level: result.level,
                    })
                    var children = result.hasOwnProperty("children")
                    if (children == true) {
                        recurz(result.children);
                    }
     
                return obj;



            }
            console.log(obj);
   
            getLi(obj, obj[0].pid, iy);
        }
    }



    var ul = document.querySelectorAll('.xing')
    // console.log(ul);
    var bread = document.querySelectorAll('.bread')
    function getLi(data, pid, ii) {
        console.log(ii);
        ul[ii].innerHTML = ''   // 清空原来的结果
        // 遍历数组
        console.log(data);
        var index = ii
        for (var i = 0; i < data.length; i++) {
           
            if (data[i].pid == pid) {
           
                var li = document.createElement('li')
                // console.log(data[i].id);
                li.setAttribute('data-id', data[i].id)
                li.setAttribute('data-level', data[i].level)
                li.innerText = data[i].name
      
                ul[index].appendChild(li)
            }
        }

        var lis = document.querySelectorAll('ul li')
        for (var i = 0; i < lis.length; i++) {
            lis[i].onclick = function () {
                console.log(index);
                //    bread[1].innerHTML += '>> <a href="" data-id="' + this.getAttribute('data-id') + '" data-level="' + this.getAttribute('data-level') + '">' + this.innerText + '</a>'
                console.log(this.getAttribute('data-id'));
                var a = document.createElement("a")
                a.setAttribute("data-id", this.getAttribute('data-id'))
                a.setAttribute("data-level", this.getAttribute('data-level'))
                a.innerText = ">>" + this.innerText
                bread[index].appendChild(a)
                getLi(data, this.getAttribute('data-id'), index)
            }
        }

        var aes = document.querySelectorAll('.bread>a')

        for (var i = 0; i < aes.length; i++) {
            aes[i].onclick = function (e) {
                e.preventDefault()

                var level = this.getAttribute('data-level')

                console.log(level, aes)

                // 清空原来的面包屑
                bread[index].innerHTML = '选择型号'

                // level代表a的层级数量
                for (var j = 0; j < level; j++) {
                 '
                    var a = document.createElement("a")
                     a.setAttribute("data-id", aes[j].getAttribute('data-id'))
                     a.setAttribute("data-level", aes[j].getAttribute('data-level'))
                     a.innerText =  aes[j].innerText
                     bread[index].appendChild(a)
                }
                level++

                getLi(data, this.getAttribute('data-id'),index)
            }

        }
    }

    $(".xuanze").on("click", ".btn", function () {
    
        var index = $(".btn").index(this)
        console.log(index);
        ss(index)
        $(".xinghao").removeClass("xinghao")
        console.log($(".xing"));
        console.log($(".bread"));
        $(".xing").eq(index).addClass("xinghao")
        $(".bread").eq(index).addClass("xinghao")

    })
 })

该处使用的url网络请求的数据。


3.效果

在这里插入图片描述

总结

点击上面的面包屑可以跳对应的层级
以上就是今天要讲的内容,本文仅仅简单介绍了面包屑与联级,希望大家可以多给建议

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值