bootstrap-treeview点击折叠后,再点击展开发现选中node没有反应

最近在写前端页面的时候发现一个bug。
有页面采用了bootstrap-treeview插件,刚开始加载页面的时候是默认展开二级子节点的,并且选中结点后右边会做查询,但是当我点击折叠按钮后,再点击展开按钮后,子节点点击后就没有反应了,按钮的js代码如下:

// 初始化树
$('#treeviews').treeview({
    levels : 2,
    data : json_data,// 树数据
    nodeIcon:'glyphicon glyphicon-folder-close'
});
//展开按钮 
$("#spreadBtn").click(function() {
    $('#treeviews').treeview({
        levels : 2,
        data : json_data,// 树数据
        nodeIcon:'glyphicon glyphicon-folder-open'
    });
});
//折叠按钮
$("#foldBtn").click(function() {
    $('#treeviews').treeview({
        levels : 1,
        data : json_data,// 树数据
        nodeIcon:'glyphicon glyphicon-folder-close'
    });
});
// node事件
$('#treeviews').on('nodeSelected', function(event, data) {
    refreshTable();// 刷新表
});

后来将按钮的js代码里面替换成treeeview自带的展开和折叠功能后问题解决,个人觉得原因在于,之前的折叠和展开功能初始化了多个treeview对象,而node事件中无法确定event是哪一个treeview对象出发的,所以导致点击node节点没有反应。以后避免使用初始化树的方式来实现折叠和展开按钮功能,更改后的js代码如下:

//展开按钮 
$("#spreadBtn").click(function() {
   $('#treeviews').treeview('expandAll',{levels:2});
});
//折叠按钮
$("#foldBtn").click(function() {
    $('#treeviews').treeview('collapseAll', { silent: true });
});

你可能感兴趣的:(Java,Web)