js新手:哪位大神能大体帮我解释下javascript的树形菜单展开模型。下面是代码

JavaScript010

js新手:哪位大神能大体帮我解释下javascript的树形菜单展开模型。下面是代码,第1张

树形的数据结构很固定,如果你不知道什么是树,那就先去补补数据结构吧。知道什么是树了,就开始考虑ui,ui中每个树节点应当具有一个维持当前状态的变量,这个状态就是当前节点是展开的还是收缩的,并且要添加对应的鼠标事件,以便切换节点的状态,单个节点处理完毕,就要考虑到子节点的问题,当一个节点因事件展开后,其所有子节点应该按照原有顺序显示出来,首先为了保持树形的ui特点,它们应该是距离其父节点有一定距离的,然后,它们也应当向其父节点一样能够在鼠标事件中切换状态

jstree默认打开有两种方式,一种在生成树结构时在有子节点的li中加class="jstree-open"还有一种是树形载入完成后用jstree的所有节点open_all事件所有节点跳转是要在生成时在li中加XXX或在载入完后再用js加载

例如你有以下节点:

节点1,节点2,节点3

有以下四种方法

//展开树

function open(objNode){

//...your code 展开树

addClose(objNode)

}

//关闭树

function close(objNode){

//...your code 关闭树

addClose(objNode)

}

//添加展开事件

function addOpen(objNode){

//objNode节点对象

objNode.detachEvent.attachEvent("onclick",close)

objNode.attachEvent("onclick",open)

}

//添加关闭事件

function addClose(objNode){

//objNode节点对象

objNode.detachEvent.attachEvent("onclick",open)

objNode.attachEvent("onclick",close)

}

那么在生成树的时候给所有节点绑定方法open(objNode)就可以了。

上面的代码是用原生的JS写的。JQuery的。。你可以在网上找找如何绑定与删除事件。