EasyUI Tree 源码onClick事件的一些修改和完善。

发布于 2012-10-19  39.87k 次阅读


基于EasyUI框架下面,会有些特殊的需求,做一些变动和修改,以下比较常用的地方修改先写一部分,我尽量写的详细点。后面再整理整理

【1】

 

1、如图【1】示,这是一个菜单tree,用到的组件是$.fn.tree({..})

Q1、onClick事件,1.2.3源码里面绑定的是所有的treeNode,也就是说,不分对象

$("#id").tree({
                                                                  
    ...
                                                                  
    onClick:function(){
                                                                  
        alert(1);
                                                                  
    }
                                                                  
})

你会发现点【基础信息】,或【人员管理】,都会alert(1);

那现在我需要Click 2的时候,收起或展开节点,Click 【3】的时候触发一个ajax请求,或者说onClick事件,怎么解决?

思路:解决方法不必要跟我一模一样,掌握思路就好。

Point1:tree我是动态绑定的,二级菜单下面有一个属性,定义actionDirect,Ajax 请求url的地址;而父级菜单节点没有

Point2:Click【2】要达到Click【1】的效果,收起或展开节点

★Solution:

在源码里面找到绑定onClick的方法,

$("div.tree-node",_8a).unbind(".tree").bind("dblclick.tree",function(){
_122(_88,this);
_89.onDblClick.call(_88,_107(_88));
}).bind("click.tree",function(){
_122(_88,this);
_89.onClick.call(_88,_107(_88));

后面加上 var node = _b1(_123,_124);//得到根节点的json格式

if(!node.actionDirect){        //point1 提到,父级节点没有actionDirect属性

//绑定展开||收起的方法

//$("span.tree-hit",_8a).unbind(".tree").bind("click.tree",function(){
//var _8b=$(this).parent();
//_e6(_88,_8b[0]);
//return false;

var _8b=$(this);
_e6(_88,_8b[0]);
return false;

}

_122(_88,this);

_89.onClick.call(_88,_107(_88));    //调用子节点onClick方法, 也就是ajax 请求

 

改的话不难,就是找起来太麻烦了。

下班了,先些这写,后面补上