Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 剑道UI树列表选择所有子节点_Jquery_Kendo Ui_Telerik - Fatal编程技术网

Jquery 剑道UI树列表选择所有子节点

Jquery 剑道UI树列表选择所有子节点,jquery,kendo-ui,telerik,Jquery,Kendo Ui,Telerik,我使用的是来自KendoUI的,我有一列包含勾号/叉号图像。到目前为止,我已将其设置为在单击行时切换勾号/叉号,并在选定节点上切换直接子节点。在剑道页面的例子中,我找到了一种方法,可以将所有的孩子切换到3级,从Daryl到Buffy 然而,由于我将使用树形列表,深度可达8级,可能更多。我需要切换所选节点的所有子节点的勾号/叉号,无论其深度有多深 下面是我目前使用的代码,我不认为再添加8级for和if语句是最好的方法 $('#treelist td[role="gridcell"]').clic

我使用的是来自KendoUI的,我有一列包含勾号/叉号图像。到目前为止,我已将其设置为在单击行时切换勾号/叉号,并在选定节点上切换直接子节点。在剑道页面的例子中,我找到了一种方法,可以将所有的孩子切换到3级,从Daryl到Buffy

然而,由于我将使用树形列表,深度可达8级,可能更多。我需要切换所选节点的所有子节点的勾号/叉号,无论其深度有多深

下面是我目前使用的代码,我不认为再添加8级for和if语句是最好的方法

 $('#treelist td[role="gridcell"]').click(function(e) {

var treelist = $('#treelist').data("kendoTreeList");

if($(this).has("img[src='greentick.png']").length > 0) {
    $(this).find('img').attr("src","redcross.png");

    var selectedRow = treelist.select();
    var dataItem = treelist.dataItem(selectedRow);
    var rowID = dataItem.id;

    var data = treelist.dataSource.data(); //Array of all data rows
    var children = [];
    console.log(data);

    for(var i = 0; i < data.length; i++) {

        var parentID = data[i].parentId;
        if(parentID == rowID) { //If this row is a child of the selected row
            children.push(data[i].id);
            data[i].working = "<img src='redcross.png' />";

            if(data[i].hasChildren) {
                var childParentID = data[i].id;  //Parent ID to check against child nodes of current node

                for(var j = i; j < (data.length - i); j++) {

                    if(data[j].parentId == childParentID) {
                        data[j].working = "<img src='redcross.png' />";
                    }
                }
            }
        }       
    }
    treelist.refresh();

} else if($(this).has("img[src='redcross.png']").length > 0) {
    $(this).find('img').attr("src","greentick.png");
}

});
作为参考,在我的示例中,这是树列表var数据返回的数组中单个数据项的外观。var数据包含一个数组,其中每行包含一个数组

Name: "Daryl Sweeney"
Phone: "(555) 924-9726"
Position: "CEO"
_events: Object
_loaded: true
dirty: false
hasChildren: true
id: 1
parent: ()
parentId: null
uid: "16a87dbd-8ddf-41f4-b69e-38822a527deb"
working: "<img src='greentick.png' id='test' />"
__proto__: i.extend.i

你的列表对子列表使用异步加载吗?我不这么认为,目前我只是使用剑道站点的示例树列表网格-你的列表对子列表使用异步加载吗?我不这么认为,目前我只是使用剑道站点的示例树列表网格-