当前位置:嗨网首页>书籍在线阅读

10-讨论

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

13.2.3 讨论

文件树代码从在类名为 expand_allcollapse_all 的链接附加事件处理程序开始。如果单击某一个链接,则向上遍历 DOM 到双亲节点 <p> , 通过下一个 <ul> , 然后向下进入其子节点。每个具有 class="tree_trigger" 属性的子链接接受 trigger_expanded 类,后续的 <ul> 接受 tree_expanded 类。这些类名与改变其外观的CSS规则对应。对于触发链接,它们拥有一个扩展的图标。而对于列表,它们现在用 display: block 代替 display: none

“实时”事件监听器监听树中的单击。本质上,监听的是 <ul class="tree"> 中的单击,然后确定单击是否发生在具有 class="trigger" 属性的链接上。如果是,执行相关的代码。使用 .live() 的好处和直接为每个链接添加单击处理程序相反:代码与所有匹配条件的现有和将来的元素相关。这是双重的好处:你不用浪费时间为许多元素附加事件监听器,而且如果动态内容通过Ajax插入,它们也会受到“实时”事件监听器的影响。

接下来,通过JavaScript为每个双亲的 :lastchild 添加一个样式钩子 class="last" 。这样就能通过一条浅灰色的线段,定位模拟树的链接性的背景图像。最后,如果在页面加载时,任何子元素 <ul> 已经用 class="tree_expanded" 硬编码为可见,遍历DOM,为最近的触发链接添加 class="tree_trigger_expanded" 类。