扩展jQuery EasyUI Tree的搜索树节点方法可以让我们实现在树形结构中搜索某个节点,且可以高亮显示符合搜索条件的节点。下面是完整攻略:
准备工作
首先,需要准备好EasyUI的相关文件,包括jQuery库、EasyUI库和样式表。并将它们引入到HTML文件中。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>扩展jQuery EasyUI Tree的搜索树节点方法</title>
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.9.22/themes/bootstrap/easyui.css">
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.9.22/themes/icon.css">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.9.22/jquery.easyui.min.js"></script>
</head>
<body>
<ul id="tt"></ul>
</body>
</html>
扩展EasyUI Tree的搜索树节点方法
将下面的代码插入到上面的HTML代码之后:
// 扩展easyui tree的搜索方法
$.extend($.fn.tree.methods, {
search: function(jqTree, searchText) {
// 迭代所有节点,查找匹配项
var matchingNodes = [];
var allNodes = jqTree.tree("getChildren");
for (var i = 0; i < allNodes.length; i++) {
var node = allNodes[i];
if (node.text.indexOf(searchText) != -1) {
matchingNodes.push(node.target);
}
}
// 从树中移除所有节点
var tree = jqTree.tree("getTree");
for (var i = 0; i < matchingNodes.length; i++) {
var node = matchingNodes[i];
var parentNode = tree.getParent(node);
tree.remove(node);
tree.append(node, parentNode);
jqTree.tree("expand", parentNode.target);
}
}
});
这段代码会扩展EasyUI Tree的search
方法,让它支持搜索树节点,并将匹配的节点移动到当前根节点下。
示例说明1
为EasyUI Tree添加节点,并绑定搜索事件,如下:
$(function() {
// 创建tree
$("#tt").tree({
data: [{
"id": "1",
"text": "Node1",
"children": [{
"id": "11",
"text": "Node11"
}, {
"id": "12",
"text": "Node12"
}]
}, {
"id": "2",
"text": "Node2"
}, {
"id": "3",
"text": "Node3"
}]
});
// 绑定搜索按钮事件
$("#btnSearch").click(function() {
var searchText = $("#txtSearch").val();
if (searchText) {
$("#tt").tree("search", searchText);
}
});
});
其中,#tt
是EasyUI Tree的ID,#btnSearch
是搜索按钮的ID,#txtSearch
是搜索框的ID。当搜索按钮点击时,会调用search
方法并传入搜索条件。
示例说明2
修改EasyUI Tree的每个节点的样式,使匹配的节点高亮显示:
// 扩展easyui tree的搜索方法
$.extend($.fn.tree.methods, {
search: function(jqTree, searchText) {
// 迭代所有节点,查找匹配项
var matchingNodes = [];
var allNodes = jqTree.tree("getChildren");
for (var i = 0; i < allNodes.length; i++) {
var node = allNodes[i];
if (node.text.indexOf(searchText) != -1) {
matchingNodes.push(node.target);
}
}
// 高亮显示匹配的节点
jqTree.tree("unSelectAll");
for (var i = 0; i < matchingNodes.length; i++) {
$(matchingNodes[i]).addClass("highlight");
$(matchingNodes[i]).parents(".tree-node").addClass("highlight-parent");
}
// 从树中移除所有节点
var tree = jqTree.tree("getTree");
for (var i = 0; i < matchingNodes.length; i++) {
var node = matchingNodes[i];
var parentNode = tree.getParent(node);
tree.remove(node);
tree.append(node, parentNode);
jqTree.tree("expand", parentNode.target);
}
}
});
同时,添加样式:
.highlight {
color: red;
font-weight: bold;
}
.highlight-parent {
background-color: #DCE9F8;
}
此时,匹配的节点会高亮显示,并且它们的父节点也会被标记出来。
希望这个扩展EasyUI Tree的搜索树节点方法的攻略能够帮到你!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:扩展jquery easyui tree的搜索树节点方法(推荐) - Python技术站