【问题标题】:How to disable all Kendo TreeView nodes without collapsed如何在不折叠的情况下禁用所有 Kendo TreeView 节点
【发布时间】:2026-01-16 02:40:01
【问题描述】:

我将 kendo.ui.TreeView 用于 jQuery。我用复选框和子对象创建了树:

$("#my-tv-1").kendoTreeView({
  dataSource: data,
  checkboxes: {
    checkChildren: true
  },
  loadOnDemand: false
}).data("kendoTreeView");

let data = [
  { text: "Item 1", id: 1 },
  { text: "Item 2", id: 2 },
  { 
    text: "Item 3", expanded: true, items: [
      { text: "Subitem 1", id: 10 }
    ]
  }
];

如何在没有折叠节点的情况下禁用所有节点(或所有树视图)?当我使用“启用”方法时,所有具有子元素并已展开的节点都会折叠。

function() {
  let treeview = $("#my-tv-1").data("kendoTreeView");

  // Disable all items
  treeview.enable(false);

  // or any node
  let n = treeview.dataSource.view()[2];
  treeview.enable(n, false);
}

【问题讨论】:

    标签: javascript kendo-ui kendo-treeview


    【解决方案1】:

    要禁用,您可以执行以下操作以使展开的节点不会折叠:

    treeview.element.find('input.k-checkbox').each(function() {
        $(this).attr('disabled', 'true');
    });
    
    treeview.element.find('span.k-in').each(function() {
        $(this).addClass('k-state-disabled');
    });
    
    treeview.element.find('span.k-i-collapse').each(function() {
        $(this).addClass('k-state-disabled');
    });
    

    要重新启用它们:

    treeview.enable(true);
    

    【讨论】:

    • 第一次工作正常(禁用,然后启用),第二次不起作用(禁用 - 是的,启用不再起作用)。
    • 打开开发工具。调查 HTML 及其属性。看看发生了什么变化或有什么不同。分析一下。如果它起作用了,那么它就没有理由不再起作用。计算机执行它被告知要做的事情。你可以逆转你所做的而不是使用treeview.enable(true)
    最近更新 更多