English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
كما يظهر فيما يلي:
/** * 1) توسيع طريقة البحث في عقدة jQuery easyui tree. يتم استخدامها كما يلي: * $("#treeId").tree("search", searchText); * حيث،treeId هو معرف عقدة UL الجذر في easyui tree،searchText هو النص الذي يتم البحث عنه. * إذا كان نص البحث فارغًا أو ""، سيتم استعادة عرض جميع العقد بشكل طبيعي */ (function($) { $.extend($.fn.tree.methods, { /** * 扩展easyui tree的搜索方法 * @param tree easyui tree的根DOM节点(UL节点)的jQuery对象 * @param searchText النص المبحوث * @param this-context easyui tree的tree对象 */ search: function(jqTree, searchText) { //مكون easyui tree. يمكن استدعاء طرق easyui tree باستخدام نموذج tree.methodName(jqTree) تعريف tree = this; //获取所有的树节点 var nodeList = getAllNodes(jqTree, tree); //如果没有搜索条件,则展示所有树节点 searchText = $.trim(searchText); if (searchText == "") { for (var i=0; i<nodeList.length; i++) { $(".tree-node-targeted", nodeList[i].target).removeClass("tree-node-targeted"); $(nodeList[i].target).show(); //展开已选择的节点(如果之前选择了) var selectedNode = tree.getSelected(jqTree); if (selectedNode) { tree.expandTo(jqTree, selectedNode.target); return; //搜索匹配的节点并高亮显示 var matchedNodeList = []; if (nodeList && nodeList.length>0) { ورودی node = null; for (var i=0; i<nodeList.length; i++) { node = nodeList[i]; if (isMatch(searchText, node.text)) { matchedNodeList.push(node); //隐藏所有节点 for (var i=0; i<nodeList.length; i++) { $(".tree-node-targeted", nodeList[i].target).removeClass("tree-node-targeted"); $(nodeList[i].target).hide(); //折叠所有节点 tree.collapseAll(jqTree); //展示所有匹配的节点以及父节点 for (var i=0; i<matchedNodeList.length; i++) { showMatchedNode(jqTree, tree, matchedNodeList[i]); }, /** * 展示节点的子节点(子节点有可能在搜索的过程中被隐藏了) * @param node easyui tree节点 */ showChildren: function(jqTree, node) { //مكون easyui tree. يمكن استدعاء طرق easyui tree باستخدام نموذج tree.methodName(jqTree) تعريف tree = this; //عرض العقدة الفرعية اگر (!tree.isLeaf(jqTree, node.target)) { ورودی children = tree.getChildren(jqTree, node.target); إذا (children && children.length>0) { للأسفل من i=0; i<children.length; i++) { إذا ($(children[i].target).is(":hidden")) { $(children[i].target).show(); }, /** * قم بتمرير سطر التمرير إلى موقف العقدة المحدد، مما يجعله مرئيًا (إذا كان هناك سطر تمرير، يتم التمرير، وإذا لم يكن هناك، يتم عدم التمرير) * @param param { * treeContainer: وحدة easyui tree (وحدة العرض التي تحتوي على سطر التمرير). إذا كان null، فإنه سيتم أخذ وحدة العرض الأم لجذر العنصر easyui tree * targetNode: العقدة easyui tree التي سيتم التمرير إليها. إذا كان targetNode فارغًا، فسيتم التمرير إلى العقدة المحددة حاليًا، وإذا لم يكن هناك عقدة محددة، فسيتم عدم التمرير * } */ scrollTo: function(jqTree, param) { //مكون easyui tree. يمكن استدعاء طرق easyui tree باستخدام نموذج tree.methodName(jqTree) تعريف tree = this; //إذا كانت node فارغة، فالحصول على العقدة المحددة حاليًا تعريف targetNode = param && param.targetNode ? param.targetNode : tree.getSelected(jqTree); إذا (targetNode != null) { //تحقق ما إذا كانت العقدة في منطقة العرض تعريف root = tree.getRoot(jqTree); تعريف $targetNode = $(targetNode.target); تعريف container = param && param.treeContainer ? param.treeContainer : jqTree.parent(); تعريف containerH = container.height(); تعريف nodeOffsetHeight = $targetNode.offset().top - container.offset().top; إذا (nodeOffsetHeight > (containerH - 30)) { var scrollHeight = container.scrollTop() + nodeOffsetHeight - containerH + 30; container.scrollTop(scrollHeight); }); /** * عرض العناصر التي تتطابق مع النص المبحوث */ function showMatchedNode(jqTree, tree, node) { // عرض جميع العناصر الأم $(node.target).show(); $(".tree-title", node.target).addClass("tree-node-targeted"); var pNode = node; while ((pNode = tree.getParent(jqTree, pNode.target))) { $(pNode.target).show(); // افتح إلى هذا العنصر tree.expandTo(jqTree, node.target); // إذا كان العنصر غير ورقي، يجب طي جميع عناصر الأطفال لهذا العنصر اگر (!tree.isLeaf(jqTree, node.target)) { tree.collapse(jqTree, node.target); /** * تحديد ما إذا كان searchText يتطابق مع targetText * @param searchText النص المبحوث * @param targetText النص الهدف * @return true إذا كان النص المبحوث يتطابق مع النص الهدف، وإلا则是false. */ function isMatch(searchText, targetText) { return $.trim(targetText)!="" && targetText.indexOf(searchText)!=-1; /** * الحصول على جميع عناصر node في easyui tree */ function getAllNodes(jqTree, tree) { var allNodeList = jqTree.data("allNodeList"); if (!allNodeList) { var roots = tree.getRoots(jqTree); allNodeList = getChildNodeList(jqTree, tree, roots); jqTree.data("allNodeList", allNodeList); بازگردان allNodeList; /** * تعریف الگوریتم ریکورسین برای دریافت فرزندان درخت جیکوئی آسانیو */ فنکشن getChildNodeList(jqTree, tree, nodes) { ورودی childNodeList = []; اگر (nodes && nodes.length>0) { ورودی node = null; برای (ورودی i=0; i<nodes.length; i++) { ورودی node = nodes[i]; childNodeList.push(node); اگر (!tree.isLeaf(jqTree, node.target)) { ورودی children = tree.getChildren(jqTree, node.target); childNodeList = childNodeList.concat(getChildNodeList(jqTree, tree, children)); بازگردان childNodeList;
به دلیل اینکه جستجوی اولیه جیکوئی آسانیو فقط از جستجوی شناسه پشتیبانی میکند، من روش گسترش جستجوی گرههای درخت جیکوئی آسانیو را ایجاد کردم تا جستجوی نامهای گرهها را نیز پشتیبانی کند و گرههای ناشناس را پنهان کند.
به همین ترتیب، این تمام محتوای پیشنهادی من برای شما در مورد روش جستجوی گرههای درخت جیکوئی آسانیو است. امیدوارم که همه شما از این درسهای فریاد کمک کنید~