jQuery Treeview的增删操作
Treeview带给我们一个很好的树形结构的表现形式,不过要对Treeview进行细致的操作,官方文档中,没有到(都是英文,懒得看了)。不过既然了解了Treeview的生成原理,自己动手做做也没什么困难。
1 回顾一下Treeview的原理
● html代码:
<ul id="mytree">
<li>天津
<ul>
<li>南开</li>
<li>河东</li>
</ul>
</li>
<li>北京</li>
</ul>
● js代码:注意和html的关系——mytree
<link rel="stylesheet" href="view.css" />
<script src="jquery-1.6.js" type="text/javascript"></script>
<script src="kie.js" type="text/javascript"></script>
<script src="view.js" type="text/javascript"></script>
<script type="text/javascript" >
$(document).ready(function(){
$("#mytree").treeview();
});
</script>
● 运行结果
2 DOM操作(资料来源www.w3school/xmldom/index.asp)
首先熟悉一下dom对象的操作
2.1 createElement(name):创建节点
● 说明:创建元素节点,此方法可返回一个 Element 对象。
● 参数:name 字符串值,这个字符串可为此元素节点规定名称。
●
2.2 firstChild 首子节点属性:
● 说明:可返回文档的首个子节点。
●
2.3 lastChild 末尾节点属性
● 说明:可返回文档的最后一个子节点。
●
2.4 appendChild(node) 追加子节点:
● 说明:该方法在指定元素节点的最后一个子节点之后添加节点。
● 语法:elementNode.appendChild(node)
● 参数:node 必需。要追加的节点。
●
2.5 insertBefore(new_node,existing_node) 插入节点
● 说明:方法在已有的子节点之前插入一个新的子节点。该方法返回这个新的子节点。
● 语法:elementNode.insertBefore(new_node,existing_node)
● 参数1:new_node 必需。要插入的节点。
● 参数2:existing_node 必需。已有节点。在此节点之前插入新节点。
2.6 hasChildNodes()判断是否有子节点
● 说明:如果当前元素节点拥有子节点,则 返回 true,否则返回 false。
● 语法:elementNode.hasChildNodes()
●
2.7 setAttribute((name,value) 方法创建或改变某个新属性。
● 语法:elementNode.setAttribute(name,value)参数 描述
● 参数1:name 必需。规定要设置的属性名。
● 参数2:value 必需。规定要设置的属性值。
2.8 示例1
● html代码:一行两列的表格;
<table width="200" border="1">
<tr id="row">
<td>a1</td>
<td>a2</td>
<tr>
</table>
jquery框架原理● js代码:添加一格
<script>
//添加单元格
function addcell(){
var ElementById("row");
var ateElement("td");
c.innerText="insert";
r.appendChild(c);
}
</script>
● 执行效果:
2.9 示例2
● html代码:一行两列的表格;
<ul id="dot">
<li>a1</li>
<li>a2</li>
</ul>
● js代码:添加一格
<script>
//添加单元格
function addcell(p,s){
var ElementById(p);
var ateElement(s);
c.innerText="insert";
r.appendChild(c);
}
</script>
js函数,增加了参数,灵活针对不同标记。
● 执行效果:
3 Treeview动态增加节点。
了解了上述的原理,其实增加节点就很容易了,基本原理和上述的示例2相同。只是这里需要解决两个问题:
● 在哪里增加?
● 增加以后是何种状态?
(至于,Treeview应该有专门的操作,因为有个Treeview.edit.js,只是懒得琢磨了,由于要求不复杂,就自己随意写了几个方法)
3.1 如何感知在哪里添加
这里做了两件事情,一个是给<li>增加一个感知鼠标操作的方法:
<ul id="dot">
<li onclick="selnode(event);" id="abc">a1</li>
<li>a2</li>
</ul>
● 取得对象js代码:
var element; //全局变量
function selnode(event){
var evt = event || window.event;
var element=evt.srcElement || evt.target;
}
3.2 如何添加
了解Treeview的结构我们知道,子节点就是在当前<li>的中间嵌套一套:
<ul><li></li> ………… </ul>
● js实现代码
function addtree(){
if(element!=null)
{
var ateElement("ul"); //创建<ul>
var ateElement("li"); //创建<li>
i.innerText="a3";
u.appendChild(i);
element.appendChild(u); //ul添加到上层选中的节点
}
}
3.3 样式的控制
上图可以看到,“a3”插入到了指定位置,但格式不对(线条未收口)。研究了一下jQuery的官方示例,发现,最后一个节点有个样式:
class=”last"
上述js增加语句:
i.setAttribute("class","last");
效果:
3.4 其它
这个是最基本的思路,其中没有考虑到得因素很多,只是基本实现了一下。实际情况可能有:
● 空树,添加节点,此时已经有<ul>,直接添加<li>即可;
● 一个节点下的第二个子节点:
不能两个都是“last”,此时需要使用insertBefore()方法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论