jstree点击一次执行两次的问题

jstree点击一次执行两次的问题

应产品需求,用jstree写了一个tree,但是却有一个bug,记录一下bug的修改过程及方法,希望可以帮助更多的人


bug成因

/**
 * 分配权限
 * @param a 分配用户的id
 */
assignRole = function (a) {
    $.ajax({
        url: "xxx",
        type: 'POST',
        cache: false,
        data:{
            token:token,
            roleId:a,
        },
        dataType:"json",
        success : function(data) {
            $('#menuTree').data('jstree', false).empty();
            $('#menuTree').jstree({
                "plugins": ["checkbox", "types", "themes"],
                "types": {
                    "default": {
                        "icon": false // 关闭默认图标
                    },
                },
                'core': {
                    'data': data
                }
            });
        },
    });
};

每次点击按钮都会调用这个方法,重新加载jstree,问题在于加载的次数会被累计,当我勾选节点的时候,点击一次节点,会执行加载tree的次数

bug修改

首先当然是某度,发现有相同的问题,但是没有解决方法,于是乎自己想办法,首先执行次数的问题,是被绑定的,使用了bind(),看了一下执行次数

$('#menuTree').bind("activate_node.jstree", function (obj, e) {
   // 处理代码
    // 获取当前节点
    // debugger
    // e.node.state.selected?false:true
    console.log(e.node.state.selected)
    // console.log(e.node)
    // var currentNode = e.node;
});

发现确实和tree的渲染次数有关,解决方法是每次渲染tree的时候,对tree进行一次解绑就好了

/**
 * 分配权限
 * @param a 分配用户的id
 */
assignRole = function (a) {
    $.ajax({
        url: "xxx",
        type: 'POST',
        cache: false,
        data:{
            token:token,
            roleId:a,
        },
        dataType:"json",
        success : function(data) {
            $('#menuTree').data('jstree', false).empty();
            $('#menuTree').unbind() // tree解绑
            $('#menuTree').jstree({
                "plugins": ["checkbox", "types", "themes"],
                "types": {
                    "default": {
                        "icon": false // 关闭默认图标
                    },
                },
                'core': {
                    'data': data
                }
            });
        },
    });
};

以上,解决办法~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值