【原创】使用yahoo雅虎js库(YUI)建立无刷新的N级树(可添加删除节点)
http://developer.yahoo.com/yui/
2。5版本的 8。84M,你可以不全用,只用树的
2、然后需要把yui/build/treeview/文件夹下面的文件复制到你的工程
3、需要引用下面的js
<script type="text/javascript"src="/yui/build/yahoo/yahoo.js"></script><script type="text/javascript"src="/yui/build/event/event.js"></script><script type="text/javascript"src="/yui/build/treeview/treeview.js"></script>
<!--Dependency source files-->
<script type="text/javascript"src="/yui/build/yahoo-dom-event/yahoo-dom-event.js"></script><script type="text/javascript"src="/yui/build/container/container_core.js"></script><!--Menu source file-->
<script type="text/javascript"src="/yui/build/menu/menu.js"></script>
页面html代码
所有的js代码
{
channelId=obj.value;if(channelId!=0)
{vards_Normal=AjaxForTree.GetTree(channelId).value;if(ds_Normal!=null&&typeof(ds_Normal)=="object"&&ds_Normal.Tables.length!=0&&ds_Normal.Tables[0].Rows.length!=0)
{
treeId=ds_Normal.Tables[0].Rows[0].TreeId;
treeInit();//alert(treeId);}else{
treeId=0;
document.getElementById("treeDiv1").innerHTML="<a href='#' style='text-decoration:underline;' οnclick='initChannelTree();'>该频道下还没有TAG树,请点击这里创建TAG树。</a>";
}
document.getElementById("releaseTreeSpan").style.display="block";
}else{
document.getElementById("releaseTreeSpan").style.display="none";
document.getElementById("treeDiv1").innerText="";
}
document.getElementById("releaseTree").href="/Tag/TagTreePosition.aspx?TreeId="+treeId+"&placeValuesBeforeTB_=savedValues&TB_iframe=true&height=500&width=770";
}functionLoadNodeContent(nodeId)
{varparam="NodeId="+nodeId;
ShowContentA("/controls/Tag/TagListForTree.ashx",param,document.getElementById("NodeContent"),null);
}functioninitChannelTree()
{varres=AjaxForTree.CreateTree(channelId).value;if(res!=-1)
{
treeId=res;
treeInit();
}else{
document.getElementById("treeDiv1").innerHTML="树创建失败!";
}
}//global variable to allow console inspection of tree:vartree;varcurrentTreeNodeId;varoTextNodeMap={};functiontreeInit() {
tree=newYAHOO.widget.TreeView("treeDiv1");varmyobj="{label:'所有',id:'1'}";
myobj=eval('('+myobj+')');varrootNode=newYAHOO.widget.TextNode(myobj, tree.getRoot(),true);
oTextNodeMap[rootNode.labelElId]=rootNode;
buildChildNodeTree(rootNode,treeId);
tree.subscribe("expand",function(node) {
});
tree.subscribe(
"collapse",function(node) {});//Trees with TextNodes will fire an event for when the label is clicked:tree.subscribe("labelClick",function(node) {varnodeId=node.data.id;
document.getElementById('TagBtnList').style.display='';
document.getElementById('addTags').href='/Tag/SelectTreeTag.aspx?TreeNodeId='+nodeId+'&placeValuesBeforeTB_=savedValues&TB_iframe=true&height=500&width=770';//document.getElementById('addTags').href='/PositionMore.aspx?placeValuesBeforeTB_=savedValues&TB_iframe=true&height=500&width=770';LoadNodeContent(nodeId);
currentTreeNodeId=nodeId;
});//alert(tree.getRoot());//The tree is not created in the DOM until this method is called:tree.draw();
}
functionbuildChildNodeTree( node ){varnodeId=node.data.id;//alert(nodeId);vards_Normal=AjaxForTree.GetChildNode(nodeId,treeId).value;if(ds_Normal!=null&&typeof(ds_Normal)=="object"&&ds_Normal.Tables!=null)
{for(vari=0;i<ds_Normal.Tables[0].Rows.length;i++)
{varTreeNodeId=ds_Normal.Tables[0].Rows[i].TreeNodeId;varTreeNodeName=ds_Normal.Tables[0].Rows[i].TreeNodeName;varmyobj="{label:'"+TreeNodeName+"',id:'"+TreeNodeId+"'}";
myobj=eval('('+myobj+')');vartmpNode=newYAHOO.widget.TextNode(myobj, node,true);
oTextNodeMap[tmpNode.labelElId]=tmpNode;
ds_child=AjaxForTree.GetChildNode(TreeNodeId,treeId).value;if(ds_child!=null&&ds_child.Tables!=null&&ds_child.Tables[0].Rows.length!=0)
{//alert(ds_child.Tables[0].Rows.length);tmpNode.setDynamicLoad(loadDataForNode);
}
}
}
}//Add an onDOMReady handler to build the tree when the document is ready//YAHOO.util.Event.onDOMReady(treeInit);functionloadDataForNode(node, onCompleteCallback) {
buildChildNodeTree(node,treeId);
onCompleteCallback();
}
DOM event triggered the display of the
ContextMenu instance.*/varoCurrentTextNode=null;/*Adds a new TextNode as a child of the TextNode instance
that was the target of the "contextmenu" event that
triggered the display of the ContextMenu instance.*/functionaddNode() {varsLabel=window.prompt("请为新建立的节点输入名称:","");varrtn=CheckIsValid(sLabel);if(!rtn)
{
alert('您输入的内容中含有非法字符,这里只允许输入字母或数字!');return;
}if(sLabel&&sLabel.length>0) {varnodeId=oCurrentTextNode.data.id;varres=AjaxForTree.AddTreeNode(nodeId,sLabel,treeId).value;//alert(res);treeInit();
}
}
/*Edits the label of the TextNode that was the target of the"contextmenu" event that triggered the display of the
ContextMenu instance.*/functioneditNodeLabel() {if(oCurrentTextNode.data.id==1)
{
alert('根节点不能编辑!');return;
}varsLabel=window.prompt("请为当前的节点输入新的名称:", oCurrentTextNode.getLabelEl().innerHTML);varrtn=CheckIsValid(sLabel);if(!rtn)
{
alert('您输入的内容中含有非法字符,这里只允许输入字母或数字!');return;
}if(sLabel&&sLabel.length>0) {varnodeId=oCurrentTextNode.data.id;varres=AjaxForTree.EditTreeNode(nodeId,sLabel).value;
treeInit();
}
}
/*Deletes the TextNode that was the target of the "contextmenu"event that triggered the display of the ContextMenu instance.*/functiondeleteNode() {varisTrue=window.confirm("您确认删除这个节点吗?");if(isTrue)
{if(oCurrentTextNode.data.id==1)
{
alert('根节点不能删除!');return;
}varnodeId=oCurrentTextNode.data.id;varres=AjaxForTree.DelTreeNode(nodeId).value;
treeInit();
}
}/*"contextmenu" event handler for the element(s) that
triggered the display of the ContextMenu instance - used
to set a reference to the TextNode instance that triggered
the display of the ContextMenu instance.*/functiononTriggerContextMenu(p_oEvent) {functiongetTextNodeFromEventTarget(p_oTarget) {if(p_oTarget.tagName.toUpperCase()=="A"&&p_oTarget.className=="ygtvlabel") {returnoTextNodeMap[p_oTarget.id];
}
else{if(p_oTarget.parentNode&&p_oTarget.parentNode.nodeType==1) {returngetTextNodeFromEventTarget(p_oTarget.parentNode);}
}
}varoTextNode=getTextNodeFromEventTarget(this.contextEventTarget);if(oTextNode) {
oCurrentTextNode
=oTextNode;}
else{//Cancel the display of the ContextMenu instance.this.cancel();}
}
varoContextMenu=newYAHOO.widget.ContextMenu("mytreecontextmenu", {trigger:"treeDiv1",
lazyload:true,
itemdata: [
{ text:"增加子节点", onclick: { fn: addNode } },
{ text:"编辑当前节点", onclick: { fn: editNodeLabel } },
{ text:"删除当前节点", onclick: { fn: deleteNode } }
] });
oContextMenu.subscribe(
"triggerContextMenu", onTriggerContextMenu);</script>【原创】使用yahoo雅虎js库(YUI)建立无刷新的N级树(可添加删除节点)相关推荐
- 利用js实现table的无刷新静态内容过滤
最近,一直在学习前端方面的知识,看到网上有一些页面的table能够实现静态内容筛选,觉得这个东西有点意思,由于初学js就想试试. 我看了一些网上有关的案例http://www.freejs.ne ...
- js动态添加删除节点
转载于:https://www.cnblogs.com/jiaobaobao/p/6762692.html
- js向html中指定位置追加文本,JavaScript中如何添加文本节点?
在javascript中提供了很多操作DOM文档的方法,当然也包括创建一个节点,下面我们来看一下JavaScript如何创建一个创建一个文本节点(text). JavaScript中添加文本节点的方法 ...
- Yahoo javascript 开源界面库YUI 和EXT
清清月儿整理 [yui][译]Yahoo!User Interface Libray 介绍 Yahoo! User Interface Library(简称yui) 是一个使用JavaScript编写 ...
- 目前国外流行的几个JS库.
今天嫌着没事,总结了一下目前国外的一些JS库,.不知道对大家有用不? 因为都是国外的站点,可能访问速度比较慢,耐心点. Ext:http://extjs.com/download jQuery:htt ...
- 贡献一个连jquery都觉的大的时候可以用的 js库
在一些很小的项目里,连用jquery都还觉的大的时候,你就可以用我的这个库了. 一个库或者框架,是应需求而生的,当你的项目实际上只需要简单的一个好用的选择器 一个ajax 封装 一个兼容的事件封装的时 ...
- jQuery库与其他JS库冲突的解决办法
关键字: javascript 现在的js库很多,而且各有所长.像我,就比较喜欢jQuery,但同时也会使用一下其他的js库,如YUI,DWR什么的.但是它们却时不时地相互闹些小矛盾,真是让人头痛.究 ...
- 若川知乎高赞:有哪些必看的 JS 库?
欢迎星标我的公众号,回复加群,长期交流学习 我的知乎回答目前2w+阅读量,270赞,现在发到公众号声明原创. 必看的js库?只有当前阶段值不值看. 我从去年7月起看一些前端库的源码,历时一年才写了八篇 ...
- MVVM js 库JsRender/JsViews和knockoutjs介绍
MVVM概念 MVVM的解释有很多,抛开抽象的描叙我想最实用的一点是把UI和数据绑定,事件做成了一种静态契约,也就是模版,同时UI和数据可以独立动态变化.WPF,SL相对Winfrom和asp.net ...
最新文章
- SPringBoot+mybatis 框架搭建例子
- 单片机定时器实验两位倒计时秒表_单片机学习「1」 初始51单片机
- Mysql的几个字符串函数【concat、concat_ws、group_concat】
- spark1.3.1使用基础教程
- VS2008,GDIPlus初步
- java安全——类加载器+字节码校验+安全管理器与访问权限
- STM32:GPIO的8种输入输出模式深入详解
- jenkins 构建异常_Jenkins多环境持续集成架构实践!
- word文档太大怎么压缩到最小?
- 数学与计算机学院女生节标语,3.7女生节标语横幅大比拼:信息管理学院:信
- xp系统支持的python版本_xp系统安装不上python
- 封装继承多态还是封装抽象继承多态
- 驰骋计算产业数十年的Wintel联盟开始分崩离析
- 推荐算法架构3:精排
- 关于计算机学院 公众号的名字,最新微信公众号名字大全
- vue3监听网页窗口关闭
- Django-(6)
- 肽基脯氨酰异构酶底物:1926163-51-0,WFY-pSer-PR-AMC
- 敏捷个人2012.3月份线下活动报道:活出我的价值
- 丰和的折价率可能超过50%