Javascript 如何禁用引导树视图的父节点复选框

Javascript 如何禁用引导树视图的父节点复选框,javascript,jquery,treeview,bootstrap-treeview,Javascript,Jquery,Treeview,Bootstrap Treeview,我想保持我的父文件夹名称不可选中。但是我不能在这里传递带有单个节点的选项 我写了这样的代码 $("#treeview-checkable").treeview({ data: root.attributeTopicList, showIcon: true, showCheckbox: true, showBorder: false, showTags: true, }); }; 我遇到了同样的问题。为了从

我想保持我的父文件夹名称不可选中。但是我不能在这里传递带有单个节点的选项

我写了这样的代码

$("#treeview-checkable").treeview({
        data: root.attributeTopicList,
        showIcon: true,
        showCheckbox: true,
        showBorder: false,
        showTags: true,
    });

};

我遇到了同样的问题。为了从最上层的父对象中删除复选框,我使用了一些变通方法

绘制完树后,我告诉它找到datanodeid=0属性并删除check-icon类span元素

因此,在树初始化之后,我立即运行以下命令:

$("#treeview-checkable").find("[data-nodeid=0]").find(".check-icon").remove();
我还检测到我页面上的每一次点击事件,以执行相同的操作

window.onclick = function(){
    $("#treeview-checkable").find("[data-nodeid=0]").find(".check-icon").remove();
};
我每次点击都会做同样的事情,因为我发现当我展开、折叠、对树做任何操作时,复选框会重新出现


这是最好的解决方案吗?不,行吗?是的。

我不得不在bootstrap-treeview.js文件中添加一些行

进程-->>

  • 进入bootstrap_treeview.js

  • 查看其渲染功能如何工作

  • 您会发现,在treeview触发任何事件或对DOM进行任何更改后,它会调用其render方法
  • 您将在第486行中找到渲染方法
  • 如果您以这样的方式编写代码,即父节点不应具有复选框,则只需编写即可

        for (var i = 0; i < $(".glyphicon-minus").length; i++)
        {
            $($(".glyphicon-minus")[i]).siblings(".check-icon").hide();
        }
        for (i = 0; i < $(".glyphicon-plus").length; i++){
            $($(".glyphicon-plus")[i]).siblings(".check-icon").hide();
        }
    
    for(变量i=0;i<$(“.glyphicon减号”).length;i++)
    {
    $($(“.glyphicon减号”)[i])。同级(“.check icon”).hide();
    }
    对于(i=0;i<$(“.glyphicon plus”).length;i++){
    $($(“.glyphicon plus”)[i])。同级(“.check icon”).hide();
    }
    

我在其库文件的.js上写了一些代码。:)在我的情况下,父文件夹节点ID不保证仅为“0”,我看到下面的解决方案没有删除该复选框。只是要小心,因为它仍然可以检查,而隐藏,如果你使用他们的“checkAll”功能。否则,您的解决方案将运行良好。对不起,我没有意识到这是为所有家长准备的,我想这只是第一次。同样,你也可以使用CheckAll函数中的那些行。因为,在调用checkall之后,它最终将再次调用render函数,并在默认情况下使用这行代码。根本没有机会选中父项框。在五月份的案例中:我没有使用checkall,这是迄今为止我得到的最好的解决方案,不用担心。只是想确定一下。但是,对于(var i=0;i<$(“.expand icon”).length;i++{$($(“.expand icon”)[i])。兄弟姐妹(“.check icon”).hide();},我发现这个较短,只包含1个for循环。只需将图标类替换为默认的treeview初始化类。您还可以使用remove()从dom中完全删除复选框