本文介绍了jQuery Dynatree-按名称搜索节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在页面上开始使用Dynatree,但是我可能需要按名称搜索树.您知道怎么做吗?
I would like to start using Dynatree on my page, however I will probably need searching my tree by name. Do you know maybe how to do this?
推荐答案
我不仅需要具有匹配的节点,而且还需要具有通往这些节点的完整路径.我编写了此功能,并且对我有用.
I needed to have not only matching nodes, but also the whole paths to these nodes. I wrote this functionality and it works for me.
库的修改:
var clear = true;
DynaTreeNode.prototype.search = function(pattern){
if(pattern.length < 1 && !clear){
clear = true;
this.visit(function(node){
node.expand(true);
node.li.hidden = false;
node.expand(false);
});
} else if (pattern.length >= 1) {
clear = false;
this.visit(function(node){
node.expand(true);
node.li.hidden = false;
});
for (var i = 0; i < this.childList.length; i++){
var hide = {hide: false};
this.childList[i]._searchNode(pattern, hide);
}
}
},
DynaTreeNode.prototype._searchNode = function(pattern, hide){
if (this.childList){
// parent node
var hideNode = true;
for(var i = 0; i < this.childList.length; i++){
var hideChild = {hide: false};
this.childList[i]._searchNode(pattern, hideChild);
hideNode = hideNode && hideChild.hide;
}
if(hideNode && !this._isRightWithPattern(pattern)){
this._hideNode();
hide.hide = true;
} else {
hide.hide = false;
}
} else {
// leaf
if (!this._isRightWithPattern(pattern)){
this._hideNode();
hide.hide = true;
} else {
hide.hide = false;
}
}
},
DynaTreeNode.prototype._isRightWithPattern = function(pattern){
if((this.data.title.toLowerCase()).indexOf(pattern.toLowerCase()) >= 0){
return true;
}
return false;
},
DynaTreeNode.prototype._hideNode = function(){
if(this.li) {
this.li.hidden = true;
}
}
使用:
$("tree").dynatree("getRoot").search(pattern);
这篇关于jQuery Dynatree-按名称搜索节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!