如何给miniui的树形设置点击事件

如何给miniui的树形设置点击事件

小伙伴们有没有被miniui耍的团团转呢?其实我觉得miniui本身是有一些不合理性的,导致他在项目中经常引发一下没必要的问题,但项目用什么框架也不是我们能决定的不是吗?
miniui的树形是通过div相互嵌套为结构的,外观还是挺精美的,就是问题有点多
在这里插入图片描述
可是树形主要是一种导航控件,但官方文档对选中节点的叙述相当模糊,如果用户选中节点而不能触发效果,这个树形写出来就没什么意义了。
其实也很简单:miniui树形结构如下

<ul id="carrier" class="mini-tree" expandOnLoad="true" imgPath="images/" ></ul>

不知道大家还记不记得js里有一个绑定元素的标签属性 : onnodeclick
用法 onnodeclick=“自定义名称”
我们只需要在树形的主体上加上onnodeclick属性再在js代码中写明方法就可以了
html代码如下:

<ul id="carrier" class="mini-tree" expandOnLoad="true" imgPath="images/" onnodeclick="gitName">
        </ul>

js代码如下:

function gitName(e){
       //要做的事
}

这样用户点击任何一个节点都会触发gitName方法,如果有判断具体点的是哪一个节点那括号里的参数(e)就好了
需要注意的是onnodeclick绑定的js方法如果写在$(function(){}里就会没有效果

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <link rel = "stylesheet" href = "css/miniui.css">
        <script src = "js/jquery-1.8.3.js"></script>
        <script src = "js/miniui.js"></script>
        <script src = "js/lodash.min.js"></script>
        <style>
            input#condition
            {
                text-align:center;
            }
        </style>
        <script>
            $(function(){
                let rootNodes = [];
                mini.parse();
                var list = [
                    { guid: "2787947a-ee0e-e711-80e8-a55521da1859", text: "深圳市" ,parent:"#", img: 'Modular.png'},            
                    { guid: "4d21faf2-2ec5-e711-80ed-8d7103722f3e", text: "龙岗区", parent: "2787947a-ee0e-e711-80e8-a55521da1859" , img: 'nothing.png'}, 
                    { guid: "a066f158-f00e-e711-80e8-a55521da1859", text: "南山区", parent: "2787947a-ee0e-e711-80e8-a55521da1859" , img: 'nothing.png'},
                    { guid: "3fc82c32-f00e-e711-80e8-a55521da1859", text: "宝安区", parent: "2787947a-ee0e-e711-80e8-a55521da1859" ,img: 'nothing.png'},
                    { guid: "2b0a6bcc-c116-e711-80ea-c979862ae7cb", text: "北京市" ,parent:"#",img: 'Modular.png'},            
                    { guid: "f271a740-f00e-e711-80e8-a55521da1859", text: "朝阳区", parent: "2b0a6bcc-c116-e711-80ea-c979862ae7cb" , img: 'nothing.png'}, 
                    { guid: "1aeeef35-1466-e711-80ed-8d7103722f3e", text: "丰台区", parent: "2b0a6bcc-c116-e711-80ea-c979862ae7cb" , img: 'nothing.png'}
                ]
                list =_.filter(list,(v)=>{
                    v.id = v.guid;
                    v.pid = v.parent;
                    return v
                })
                var tree = mini.get("carrier");
                tree.loadList(list);
                tree.selectNode(list[0]);
                $("p").html(list[0].text)
                $("input").focus(function(){
                    $(this).attr("placeholder","");
                });
                $("input").blur(function(){
                    if(rootNodes.length == 0){
                        if($(this).val() != ""){
                            alert("没有匹配数据");
                            tree.loadList(list);
                            tree.selectNode(list[0]);
                            $("p").html(list[0].text)
                            $(this).val("");
                        }
                    }
                    $(this).attr("placeholder","请输入关键字");
                });
                $('input#condition').on("input propertychange", function (e) {
                    if($(this).val() != ""){
                        this.treeNodes = list;
                        rootNodes = _.filter(this.treeNodes, a => a.text.indexOf($(this).val())>-1);
                        if(rootNodes.length > 0){
                            tree.loadList(rootNodes);
                            tree.selectNode(rootNodes[0]);
                            $("p").html(rootNodes[0].text)
                        }
                    }else{
                        tree.loadList(list);
                        tree.selectNode(list[0]);
                        $("p").html(list[0].text)
                    }
                })
                $("button").on('click',function(e){
                    var list = mini.get("carrier");
                    var node = list.getSelectedNode();
                    $("p").html(node.text)
                })
            })
        </script>
    </head>
    <body>
        <input  id="condition" placeholder = "请输入关键字"/>
        <ul id="carrier" class="mini-tree" expandOnLoad="true" imgPath="images/" onnodeclick="gitName">
        </ul>
        <button type='button' >确认当前节点</button>
        <p></p>
        <script>
            function gitName(e){
                $("p").html(e.node.text)
            }
        </script>
    </body>
</html>

这是我的ui树形,大家可以用于参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值