JavaScript框架的选择函数:DOM遍历

DOM遍历

基于ID、元素类型、类名查找元素非常有用,但是如果你想基于它在DOM树中的位置来查找元素该怎么办?换句话说,你有一个给定的元素,你想查找它的父元素、子元素中的一个、它的上一个或下一个节点兄弟节点。例如,采用下面这段零碎的HTML代码:

清单1:HTML碎片(一个table)

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Email Address</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        <tr id="row-001">
            <td>Joe Lennon</td>
            <td>joe@joelennon.ie</td>
            <td><a href="#">Edit</a> 
                <a href="#">Delete</a></td>
        </tr>
        <tr id="row-002">
            <td>Jill Mac Sweeney</td>
            <td>jill@example.com</td>
            <td><a href="#">Edit</a> 
                <a href="#">Delete</a></td>
        </tr>
    </tbody>
</table>

清单1使用缩进来说明其中每个元素节点在DOM树中的位置。在这个实例中,table元素是根元素,有两个子节点thead和tbody。thead元素有一个tr子节点,tr有三个孩子--所有的th元素。tbody元素有两个tr子节点,每个tr节点有三个孩子。在上述每一行的第三个节点中进一步包含子节点,都是两个链接标记。

正如你知道的那样,你可以使用一个JavaScript框架的选择函数通过ID很轻松的选择一个元素。在这个实例中,有两个元素拥有ID,它们是ID分别为row-001和row-002的tr元素。使用Prototype库选择第一个tr,可以使用下面的代码:

var theRow = $('row-001');

在上一章,你还了解到,基于元素的类型或class使用选择器来获取元素。在这个实例中,你可以使用下面的语法来得到所有的td元素。

var allCells = $$('td');

改代码的主要问题在于它返回了每一个td 元素。但是,如果你只想得到ID为row-001的tr的所有td元素该怎么办?这正是DOM遍历函数发挥作用的地方。首先,让我们使用原型来选择ID为row-001的tr的所有的子级。

var firstRowCells = theRow.childElements();

这将返回theRow变量(你最初设置的ID为row-001的tr)所有子元素的数组。

接下来,我们假设你只想得到该行的第一个子元素。在本例中,即包含“Joe Lennon”文本的td元素。要做到这一点,使用下面的语句:

var firstRowFirstCell = theRow.down();

真简单!这个特定的使用方法等价于:

var firstRowFirstCell = theRow.childElements()[0];

也可以这样表示:

var firstRowFirstCell = theRow.down(0);

JavaScript的索引从零开始,所以上面的语句主要告知JavaScript来选择第一个子元素。要选择第二个子元素(单元格包含电子邮件地址joe@joelennon.ie),你可以这样用:

var firstRowSecondCell = theRow.down(1);

或者,你可以在兄弟节点之间浏览DOM。本例中,第二个单元格是第一个单元格的下一个兄弟节点。因此,你可以使用下面的语句:

var firstRowSecondCell = firstRowFirstCell.next();

与down()函数工作一样,选择第三个单元格可以这样使用。

var firstRowThirdCell = firstRowFirstCell.next(1);

除了使用索引来查找特定节点外,Prototype库还可以使用CSS选择器语法。在清单1中,我们要找到第二个包含 Jill Mac Sweeney’ 详细信息的链接(“删除”链接)。

var secondRowSecondLink = $('row-002').down('a', 1);

在本例中,使用$函数来查找ID为row-002的那一行,向下遍历到第二个后代a元素(锚点)。

一些框架还允许“菊花链式”的遍历功能,这意味着你可以彼此连接遍历命令。上面的例子中,Prototype库的另一种表达方式是这样的:

var secondRowSecondLink = $('row-002').down('a').next();

看看下面的例子:

var domTraversal = $('row-001').down().up().next().previous();

正如你所见,菊花链允许你连接多个DOM遍历语句。事实上,上述例子实际上最终选择ID为row-001的tr元素,所以菊花链又回到了开始的地方。

时间: 2024-12-30 04:56:28

JavaScript框架的选择函数:DOM遍历的相关文章

JavaScript框架操作DOM改变网页元素的内容和外观

DOM操作 在此之前,你已经看到JavaScript框架使用选择器和DOM遍历可以很容易的获得特定的元素.但是,为了改变网页上特定元素的内容和外观,你需要操作DOM并应用改变.使用纯粹的JavaScript将是一件繁重的工作,但幸运的是,大多数JavaScript框架提供有用的函数,可以很容易地做到这些. 假设你有一个ID为the-box的盒子. <div id="the-box">Message goes here</div> 使用jQuery将其文本改变为&

什么是JavaScript框架

摘要:现代网站和web应用程序趋向于依赖客户端的大量的javascript来提供丰富的交互.特别是通过不刷新页面的异步请求来返回数据或从服务器端的脚本(或数据系统)中得到响应.在这篇文章中,你将会了解到javascript框架如何更快.更方便的创建互动性强.响应快得网站和web应用程序. 导言:JavaScript是一种面向对象的脚本语言,一直以来用作Web浏览器应用程序客户端脚本接口的选择.JavaScript允许Web开发人员编程与网页上的对象的工作,为凭空操作这些对象提供了一个平台.当Ja

5个JAVASCRIPT框架详细的比较

框架比较 表1对本文中讨论的五个框架提供详细的比较   Prototype jQuery YUI ExtJS MooTools Latest Version 1.6.1 1.4.1 3.00 3.1 1.2.4 License MIT MIT & GPL BSD Commercial & GPL v3 MIT       Browser Compatibility     IE Support 6.0+ 6.0+ 6.0+ 6.0+ 6.0+ Firefox Support 1.5+ 2.

Javascript编程语言和DOM接口系列教程(1)

Hello,今天开始彬Go将以系列教程的方式为大家讲解Javascript编程语言和DOM接口,本篇教程为该系列的第一部分. 虽然现在一些js框架诸如jQuery.Prototype和MooTools能提高我们的前端开发效率而且很好的解决了浏览器兼容性问题,但我们仍要打好javascript技术基础.Javascript DOM 控制系列教程将告诉你你需要了解的javascript和文档对象模型(DOM)的本质. 引言 JavaScript JavsScript是可以在各种不同环境下使用的动态的

JavaScript框架是什么?怎样才能叫做框架?

  这篇文章主要介绍了JavaScript框架是什么?怎样才能叫做框架?,本文讲解了什么是 JavaScript 框架.JavaScript 框架的典型特性等内容,需要的朋友可以参考下 刚初学js时,总会听到关于框架的一些事情.等学完JQ后我才知道什么是框架.一下是转载的一篇文章,希望对还迷茫的童鞋们有点帮助. 什么是 JavaScript 框架? JavaScript 本身就是一种功能强大的语言,您不需要额外的框架就可创建富互联网应用程序(RIA).然而使用 JavaScript 并不是件容易

超赞的动手创建JavaScript框架的详细教程

  这篇文章主要介绍了动手创建JavaScript框架的详细教程,包括DOM和各种属性的调试等各个方面,超级推荐!需要的朋友可以参考下 觉得Mootools不可思议?想知道Dojo是如何实现的?对JQuery的技巧感到好奇?在这篇教程里,我们将探寻框架背后的秘密,然后试着自己动手建立一个你所喜爱的框架的简易版本. 我们几乎每天都在使用各种各样的JavaScript框架.当你刚入门的时候,方便的DOM(文档对象模型)操作让你觉得JQuery这样的东西非常棒.这是因为:首先,对于新手来说DOM太难理

javascript框架设计之框架分类及主要功能

这篇文章主要介绍了javascript框架设计之框架分类及主要功能的相关资料,需要的朋友可以参考下 从内部架构和理念划分,目前JavaScript框架可以划分为5类. 第一种是以命名空间为导向的类库或框架,如果创建一个数组用new Array(),生成一个对象用new Object(),完全的java风格,因此,我们以某一对象为跟,不断为它添加对象和二级对象属性来组织代码,如金字塔般垒起来,早期代表YUI,EXT(so,不是有活力的公司都还用它们) 第二种是以类工厂为导向的框架.著名的有Prot

Angular.js框架基础知识,来自Google的前端JavaScript框架

AngularJS 是一款来自 Google 的前端 JavaScript 框架,也是 SPA(single-page-application,单页应用)框架.AngularJS 框架的体积非常小,但是设计理念和功能却非常强大,极大地简化前端开发的负担,它快速成为了 JavaScript 的主流框架,帮助开发者从事 web 开发. SPA 和 MVC SPA:单页面应用是指用户通过浏览器加载独立的 HTML 页面并且无需离开此导航页面.对用户操作来说,一旦加载和执行单个页面应用程序通常会有更多的

JavaScript框架是什么?怎样才能叫做框架?_javascript技巧

刚初学js时,总会听到关于框架的一些事情.等学完JQ后我才知道什么是框架.一下是转载的一篇文章,希望对还迷茫的童鞋们有点帮助. 什么是 JavaScript 框架? JavaScript 本身就是一种功能强大的语言,您不需要额外的框架就可创建富互联网应用程序(RIA).然而使用 JavaScript 并不是件容易的事,主要是由于支持多个 Web 浏览器产生的复杂性.与 HTML 和 CSS一样,不同的浏览器有不同的 JavaScript 实现.让 JavaScript 代码实现跨浏览器兼容简直是