jquery怎么获取动态生成的树形菜单的属性

jquery怎么获取动态生成的树形菜单的属性,第1张

首页简单创建一个动态的树

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN" ";

效果图:

提取如何 获取属性。

用户事件获取

$(function(){
    $("st_tree")SimpleTree({
        click:function(a){
            if(!$(a)attr("hasChild"))
                alert($(a)attr("ref"));
        }
    });
});

2 动态维护修改属性 这个时候需要用到each 遍列 + val值判断 设置新属性和读取

 jQueryeach($("st_tree"), function(i, val) {  // i 指向键, val指定值
      if(val == "xxx"){
        // 你可以做读了或重新设置
      }
    });

不知道你想问什么,你想知道java怎么取得数据呢,还是想知道javascript怎么生成tree,或者你这个tree已经有了,你怎么向tree中传值
你如果不知道怎么建立javascript tree,这边有个例子:>

我看你的数据有3级树结构,你的session里的数据也是3级么?

1级结构可以这样输出:

var treeData=[
<%
menu[] menus=(menu[])sessiongetAttribute("menu");
int cou=menuslength;
for(int i=0;i<cou;i++){
a = ","
if( i=cou-1 )then a="" '最后一个不输出逗号
%>
{
text:"<%= menus[i]getMenuName() %>",
iconCls:"icon-menu",
attributes:{ url:"<%=menus[i]getMenuLink() %>" }
}<%=a '你的结构数据应该是这样划分的吧,试试看%>
<% } %>
];

多级的话,也是同样的思路,asp读出多级的session,然后在页面输出,js是获取不了session的

<script type="text/javascript">
/
  获取当前选择的菜单
 /
function getCurrentGroup() {
var group = new Array();
$("accordionHeader")each(function(i) {
if ($(this)find("h2")hasClass('collapsable')) {
group[0] = $(this)attr("id");
group[1] = $(this)attr("name");
return false;//return false 为jquery中的跳出循环 相当于for循环的break
}
});
return group;
}
/
  获取选择的菜单
  
  group : 当前选择的菜单组
 /
function getSelectMenus(groupName) {
var result = "";
$("input:checkbox[name=" + groupName + "]:checked")each(
function(i, a) {
result += "," + avalue;
});
if (resultlength > 0) {
result = resultsubstring(1);
}
return result;
}
</script>

1你的设计有点不合理
2不知道用什么数据库
建议:使用dtree或者xloadtree 这两个是最常用的树形组件
把表结构换成一张表,加个字段父id
ID 名字 父ID
1 香烟 0
2 中华 1
3 中南海 1
4 酒 0
5 茅台 4
6 小茅台 5
如果数据库是oracle的话,直接使用递归查询
如果是其他数据库,建议使用 xloadtree,点击一下,会动态刷出子节点ajax效果
--------------------------------补充
那就推荐你用ajax的树
刚开始的时候只需要大类型
id name
1 烟
2 酒
小类表
id name pid
1 中华 1
2 中南海 1
3 茅台 2
取大类直接查生成树之后
每点击一下容然后去查小类
比如点击烟 把烟的id传到后台id=1
然后查小类 select from XXX where pid=1
那么所有的小类就都出来了

用递归法生成树,给你一个我做的生成公司组织结构方法参考一下吧。
#region 加载所有部门树形
/// <summary>
/// 根据用户ID加载对应的菜单
/// </summary>
/// <param name="userId"></param>
public static void DisplayDemparmnetsTree(TreeView tree)
{
treeNodesClear();
IList<DepartmentInfo> list = DepartmentInfoManagerGetDepartmentInfosByFatherId("0");
foreach (DepartmentInfo dep in list)
{
TreeNode fathernode = CreatTreeNode(depDepartmentName, depDepartmentIdToString(), "", "~/Images/menuclosegif");
treeNodesAdd(fathernode);
CreateChildTree(depDepartmentIdToString(), fathernode);
}
}
private static TreeNode CreatTreeNode(string strText, string strId, string strUrl, string strImg)
{
TreeNode newNode = new TreeNode();
newNodeText = strText;
newNodeValue = strId;
newNodeNavigateUrl = strUrl;
newNodeImageUrl = strImg;
return newNode;
}
private static void CreateChildTree(string fatherDepartmentId, TreeNode fatherNode)
{
IList<DepartmentInfo> childlist = DepartmentInfoManagerGetDepartmentInfosByFatherId(fatherDepartmentId);
foreach (DepartmentInfo dep in childlist)
{
TreeNode childNode = CreatTreeNode(depDepartmentName, depDepartmentIdToString(), "", "~/Images/menuclosegif");
fatherNodeChildNodesAdd(childNode);
CreateChildTree(depDepartmentIdToString(), childNode);
}
}
#endregion

Sql Server 2000因为你这里说了只有三级分类,所以我就不写Sql函数了,得到华北下面所有子类别的ClassID(不包括华北的ClassID)select ClassID from Newclass where classParentID in (select ClassID from Newclass where classParentID=51)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13346662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存