在使用easyui-combotree组件时,如果数据量特别大,又不想做节点懒加载,需要一次性把数据渲染出来,这个时候组件加载需要耗时很久(点击下拉后需要过很久才弹出下拉面板)。怎么解决呢?
直接撸源码:
找到tree下的doFilter,
doFilter:function(jq,q){
return jq.each(function(){
_f5(this,q);
});
}
ok,找一下_f5这个方法:
function _f5(_f6,q){
var _f7=$.data(_f6,"tree");
var _f8=_f7.options;
var ids={};
$.easyui.forEach(_f7.data,true,function(_f9){
if(_f8.filter.call(_f6,q,_f9)){
$("#"+_f9.domId).removeClass("tree-node-hidden");
ids[_f9.domId]=1;
_f9.hidden=false;
}else{
$("#"+_f9.domId).addClass("tree-node-hidden");
_f9.hidden=true;
}
});
for(var id in ids){
_fa(id);
}
function _fa(_fb){
var p=$(_f6).tree("getParent",$("#"+_fb)[0]);
while(p){
$(p.target).removeClass("tree-node-hidden");
p.hidden=false