Wijmo Tree 可以把数据通过树形结构展示出来。同时,它提供 展开、折叠 动画效果、丰富的主题样式以及 drag-and-drop 功能等。
该插件的 findNodeByText 方法可以通过 Node 的 Text 属性选择节点。但是,目前没有提供通过 Value 选择节点的方法。
在这篇文章中,我们将向大家展示如何通过 Value 来选择或删除特定 Node。
如何创建 WijTree,请参考:http://wijmo.com/wiki/index.php/Tree#Wijtree_Full_Markup_and_Scripting,使用标签如下:
<ul id="tree">
<li value="100" title="Value 100"><a><span>Folder 1</span></a>
<ul>
<li value="101" title="Value 101"><a><span>Folder 1.1</span></a></li>
<li value="102" title="Value 102"><a><span>File 1.2</span></a></li>
<li value="103" title="Value 103"><a><span>File 1.3</span></a></li>
<li value="104" title="Value 104"><a><span>File 1.4</span></a></li>
<li value="105" title="Value 105"><a><span>File 1.5</span></a></li>
</ul>
</li>
<li value="200" title="Value 200"><a><span>Folder 2</span></a>
<ul>
<li value="201" title="Value 201"><a><span>File 2.1</span></a></li>
<li value="202" title="Value 202"><a><span>File 2.2</span></a></li>
<li value="203" title="Value 203"><a><span>File 2.3</span></a></li>
<li value="204" title="Value 204"><a><span>File 2.4</span></a></li>
<li value="205" title="Value 205"><a><span>File 2.5</span></a></li>
</ul>
</li>
<li value="300" title="Value 300"><a><span>Folder 3</span></a>
<ul>
<li value="301" title="Value 301"><a><span>File 3.1</span></a></li>
<li value="302" title="Value 302"><a><span>File 3.2</span></a></li>
<li value="303" title="Value 303"><a><span>File 3.3</span></a></li>
<li value="304" title="Value 304"><a><span>File 3.4</span></a></li>
<li value="305" title="Value 305"><a><span>File 3.5</span></a></li>
</ul>
</li>
</ul><script type="text/javascript">
$(document).ready(function () {
//make the ul list as WijTree
$("#tree").wijtree({ showExpandCollapse: false });
});
选择节点:
选择节点的方法为,首先我们需要获取所有的 li 标签,然后遍历 li 标签的 Value,进而选择该标签:
//handle Select button
$("#btnSelect").click(function (e) {
//get the enter value
var valueToSearch = $("#txtUser").val();
//called the custom method to select
SelectNodeByValue(valueToSearch);
});
//handle the enter key of textbox
$("#txtUser").keyup(function (e) {
if (e.keyCode == 13) {
var valueToSearch = $("#txtUser").val();
SelectNodeByValue(valueToSearch)
}
});
function SelectNodeByValue(val) {
//get the list of li tags in WijTree
var li_treeNodes = $(".wijmo-wijtree-list").find('li');
//filter this collection on basis of entered value
var node = li_treeNodes.filter(function (index) {
return $(this).val() == val;
});
//select the retrieved node
$(node).wijtreenode({ selected: true });
}
删除节点:
删除节点的方法为,首先我们需要获得含有该 Value 的节点,判断是否为 父节点,如果为父节点,那么需要移除其包含的所有子节点。否则,我们直接移除该 li 标签即可:
//handle the delete button
$("#btnDelete").click(function (e) {
var valueToSearch = $("#txtUser").val();
//call the custome Delete method
DeleteNodeByValue(valueToSearch);
});
function DeleteNodeByValue(val) {
var li_treeNodes = $(".wijmo-wijtree-list").find('li');
//traverse through all the li tags
$.each(li_treeNodes, function (index, node) {
if ($(node).val() == val) {
//get the parent of the specific node to delete
var parent = $(node).wijtreenode('getOwner');
//retrieve its index
var nodeIndex = $(node).index();
//check if its a child node
if (parent != null)
parent.element.wijtreenode("remove", nodeIndex);
else
$("#tree").wijtree("remove", nodeIndex);
}
});
}
演示页面:点击
演示截图:
