我想扩展kendo ui treeview第一个项目及其第一个孩子。我已经在数据绑定中编写了代码
$("#treeview").data("kendoTreeview").expand("li:first");
$("#treeview").data("kendoTreeview").expand("li:first").children(".k-group");
但是只扩展第一项。不是展开项目的第一个孩子。我怎么能在kendo ui中做到这一点
答案 0 :(得分:0)
声明一个全局变量
var counter = 2;
现在在树的数据绑定事件中
if(counter > 0) {
$("#treeview").data("kendoTreeView").expand('.k-item:first');
$("#treeview").data("kendoTreeView").expand('.k-item:first .k-item:first');
counter = counter - 1;
}
答案 1 :(得分:0)
如果按需加载数据(例如通过AJAX调用),问题是当执行以下行时,第二个节点(第一个孩子的第一个孩子)不存在:
$("#treeview").data("kendoTreeView").expand("li:fist li:first")
要实现这一点,您必须在第一次expand()完成执行后执行该行。
我看到两个选项:
使用kendoTree活动
使用setTimeout(丑陋的方式)
广告1。
var yourTreeSelector = "#youTreeId";
var $tree = $(yourTreeSelector);
var treeView = $tree.data("kendoTreeView");
var $firstItem = $tree.find(' > ul > li.k-item:first');
console.log($firstItem);
//make sure selector is ok and first item exists
if($firstItem.length){
treeView.expand($firstItem); //expand first item
var secondSelectedFlag = false; //init flag to false
//handler method
selectSecond = function(){
var $fistChildOfFirstItem = $firstItem.find(' > ul > li.k-item:first');
console.log($fistChildOfFirstItem);
//make sure expand will execute only when node exists and was not expanded earlier
if(!secondSelectedFlag && $fistChildOfFirstItem.length){
secondSelectedFlag = true;
treeView.expand($fistChildOfFirstItem);//expand on selected node
treeView.unbind("dataBound");//unbind method
}
}
treeView.bind("dataBound", selectSecond);//bind a handler method to dataBound event
}
Ad 2.在第一个节点后面扩展代码:
setTimeout(
function (){
var $fistChildOfFirstItem = $firstItem.find(' > ul > li.k-item:first');
console.log($fistChildOfFirstItem);
treeView.expand($fistChildOfFirstItem);
},
3000 //3 seconds is reasonable amount of time
);
答案 2 :(得分:-1)
$("#treeview").data("kendoTreeView").expand("li:first"); // expands first child
$("#treeview").data("kendoTreeView").expand("li:first li:first"); // expands first child or the first child