【问题标题】:Kendo UI Treeview Checkbox Parent NodeKendo UI Treeview 复选框父节点
【发布时间】:2015-06-18 13:30:30
【问题描述】:

我对 kendo ui 很陌生,我有一个非常相似的树视图,如下所示:

 http://demos.telerik.com/kendo-ui/treeview/checkboxes

当孩子被选中时,我可以知道如何获取父 ID 吗?以上面的 URL 为例,当我检查“about.html”时,如何检索值“1,2,3”而不是只返回“3”?

当我选择“about.html”和“index.html”时,它应该返回“1,2,3,4”

[14/4 - 更新] 很抱歉之前造成混淆。 下面是我做的jsfiddle:
http://jsfiddle.net/ntc2000/qgkzpv3d/2/

场景:

  1. 当我选择“kendo.css”时,它应该返回“3,4,5”。
  2. 当我选择“jquery.css”时,它应该返回“3,4,6”
  3. 如果我选择“Kendo UI Project”,它应该返回“3,4,5,6” --> 当前工作

【问题讨论】:

  • 你是什么意思parent idretrieve value "1,2,3"?你的元素有id 属性吗?您是指集合中项目的索引吗?显示您的一些 html 和预期的输出。
  • 抱歉造成混淆,下面是我在 jsfiddle jsfiddle.net/ntc2000/qgkzpv3d/2 中制作的示例当我检查“kendo.css”时,预期结果应该返回“3,4,5”而不是“5” "。
  • 您可以使用.parents('li') 获取包含<li> 的元素,然后在每个元素中找到第一个复选框并获取其值。不确定你想对结果做什么,但我已经更新了你的fiddle here,并举例说明了你可以做什么。
  • 谢谢 Stephen Muecke,它解决了我的问题。感谢你的帮助。谢谢。
  • 由于我不确定你想如何使用它,所以我无法给出答案,所以你应该在代码中添加你自己的答案,并接受它以关闭它。跨度>

标签: javascript jquery telerik asp.net-mvc-5 treeview


【解决方案1】:

在checkedNodeIds中你可以将被检查节点的父节点推送到checkedNodes数组中。

类似这样的:

// function that gathers IDs of checked nodes
    function checkedNodeIds(nodes, checkedNodes) {
        for (var i = 0; i < nodes.length; i++) {
            if (nodes[i].checked) {
                checkedNodes.push(nodes[i].id);
                checkedNodes.push(nodes[i].parent().parent();
            }

            if (nodes[i].hasChildren) {
                checkedNodeIds(nodes[i].children.view(), checkedNodes);
            }
        }
    }

当然你应该做一些未定义的检查,也许创建一个变量来保存节点[i]

【讨论】:

  • 感谢您的帮助,我确实尝试过 parent().parent() ,但它只是在它的孩子上返回 1 级上一级父母。树视图是由 razor 动态生成的,在到达子节点之前可以是多层(超过 3 个父节点)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多