这是一个树形菜单的展示。其功能及其强大,几乎可以提供你对树结构的各种要求。下面,对其简述。
<script src="<%=request.getContextPath() %>/js/jquery-0.9.6.js" type="text/javascript"></script> <script src="<%=request.getContextPath() %>/js/css.js" type="text/javascript"></script> <script type="text/javascript" src="<%=request.getContextPath() %>/js/tree_component.js"></script> <link rel="stylesheet" href="<%=request.getContextPath() %>/css/tree_component.css" />这个树,我们需要给它提供一个容器,如div。
$(function () { $.ajaxSetup({cache:false});//这个是为了树的准确性做的一个缓存区清理的工作 $("#divForTree").tree({//从这里开始初始化JSTree data : { type : "json",//支持如xml等多种类型,这里是获取JSON格式数据源 url : src,//每次获得数据从这个链接 async : true,//动态加载数据 async_data : function (NODE) {//请求数据时带的参数列表,可通过getParameter获得。 return { parent_Id : $(NODE).attr("id") || 0} } }, lang:{ loading:"目录加载中……" //在用户等待数据渲染的时候给出的提示内容,默认为loading }, ui:{//在这个option中设置context来控制JSTree的右键操作,如果在context的visible函数内始终返回false则表示在任何节点的右键都无效。 context:{visible : function (NODE, TREE_OBJ) { return false; }} }, callback : {//响应函数,如节点被选中的onselect,还有onopen,onload,beforeopen等很多可定义内容。 onselect: function(node) { //自定义操作 } } }); });
<%@ page contentType="text/html; charset=utf-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> [ <s:iterator value="noteslist" > { attributes: { id : ${id} }, data: "${name}" ,state: "closed" } , </s:iterator> ]
$(document).ready(function(){ $.ajaxSetup({cache:false}); $("#browser").tree({ data : { type : "json", url : src, async : true, async_data : function (NODE) { return { parent_Id : $(NODE).attr("id") || 0} } }, lang:{ loading:"目录加载中……" }, rules: { draggable : "all" //这个设置可以使得节点进行拖动操作 }, ui:{ context : [ //自定义右键操作的可操作内容 { id : "create", label : "添加下级目录", //右键弹出菜单的此项操作屏显字样 visible : function (NODE, TREE_OBJ) { if(NODE.length != 1) return false; return TREE_OBJ.check("creatable", NODE); }, //允许节点被右击时出现操作菜单 icon : "<%=request.getContextPath() %>/css/themes/default/create.png",//右键弹出菜单的此项操作图标 action : function (NODE, TREE_OBJ) { //进行此项操作,将有这个函数事件被响应 } }, "separator"//这个是在两个操作之间画一条分隔线 , { id : "edit", label : "编辑目录信息", visible : function (NODE, TREE_OBJ) { if(NODE.length != 1) return false; return TREE_OBJ.check("creatable", NODE); }, icon : "<%=request.getContextPath() %>/image/reg2.gif", action : function (NODE, TREE_OBJ) { openWindow('myurl','','',function(){treeRefresh($(NODE).attr("id"));}); } }, "separator" , { id : "privilege", label : "设置目录权限", visible : function (NODE, TREE_OBJ) { if(NODE.length != 1) return false; return TREE_OBJ.check("creatable", NODE); }, icon : "<%=request.getContextPath() %>/css/themes/default/rename.png", action : function (NODE, TREE_OBJ) { openWindow('myurl','','',function(){treeRefresh($(NODE).attr("id"));}); } }, "separator", { id : "delete", label : "删除", visible : function (NODE, TREE_OBJ) { if(NODE.length != 1) return false; return TREE_OBJ.check("creatable", NODE); }, icon : "<%=request.getContextPath() %>/css/themes/default/remove.png", action : function (NODE, TREE_OBJ) { var tree=$.tree_reference("browser"); openWindow('myurl','','',function(){ //下边的.parent()和.refresh()均为v0.9.8版本提供,如果你使用的是其他版本如v0.9.6等,这些将不被支持。 NODE=$(tree.parent(NODE)); if($(NODE).attr("id")==undefined){ tree.refresh(); }else{ TreeRefresh(); } }); } }, "separator", { id : "others", label : "其他操作", visible : function (NODE, TREE_OBJ) { if(NODE.length != 1) return false; return TREE_OBJ.check("creatable", NODE); }, icon : "<%=request.getContextPath() %>/css/images/cut.png", action : function (NODE, TREE_OBJ) { alert("暂无可提供操作。"); } } ] }, callback : { onselect: function(node) { //(a); } } }); function treeRefresh(nodeid){ var rid=nodeid; var tree=$.tree_reference("browser"); var par_node=tree.parent($("#"+rid)); tree.refresh(par_node); } });