4

我有一个使用 Kendo UI 树视图的树状结构。每个节点都显示为一个超链接,单击每个节点时,kendotabstrip将打开一个新节点。我的问题是,如果我选择一个节点,结果会在新选项卡中正常显示,但是如果我关闭新打开的选项卡然后选择同一个节点,则不会打开新选项卡,因为该节点已被选中。如果我必须选择同一个节点,那么我必须访问另一个节点,然后再回到节点。

使用以下代码段打开新选项卡后,我尝试取消选择所选项目:

var treeview=$(#grpTree).data("KendoTreeView");

var selNode=treeview.select(); 

selNode.find("span.k-state-selected").removeClass("k-state-selected")

但该节点没有被取消选择。有没有其他方法可以做到这一点,或者我错过了什么?

4

4 回答 4

8

我知道这篇文章有点过时了,但是随着 Telerik 不断升级它的组件,我想我会把它放在这里,以便人们可以意识到这一变化正在向前发展。

您可以使用以下语法取消选择所有选定的节点:

    var treeView = $("#treeView").data("kendoTreeView");
    treeView.select($());

资料来源:Kendo UI Treeview Documentation for Select

于 2013-04-26T18:41:31.883 回答
1

是的,这是设计使然。如果你想附加一个每次都会触发的点击处理程序(无论节点是否已经被选中)。您可以附加一个委托事件,如下所示:

$('#treeviewName').on('click','.k-item',function(e){
      var clickedNode = $(this);
      var treeViewClientObject = $(e.delegateTarget).data().kendoTreeView;
})
于 2012-12-11T21:48:58.490 回答
1

我的代码:

var treeview=$(#grpTree).data("KendoTreeView");

treeview.select(null);
于 2016-06-17T04:27:13.623 回答
0

这总是调用 change 函数,所以这可以是另一种解决方案:

    $("#favorite_tree").kendoTreeView({
change: function () {
    if (this.dataItem(this.select())) {
        var treeView = $("#calendar_tree").data("kendoTreeView");
        treeView.select($());
    }
}
}).data('kendoTreeView');

$("#calendar_tree").kendoTreeView({
change: function () {
    if (this.dataItem(this.select())) {
        var treeView = $("#favorite_tree").data("kendoTreeView");
        treeView.select($());
    }
 }
}).data('kendoTreeView');    
于 2015-01-15T12:36:04.707 回答